[英]Haskell IO reverse string input
我不斷收到錯誤消息:無法將預期的類型“布爾”與實際類型“ [t0]”匹配。 我試圖獲取用戶輸入的字符串,然后以反向ORDER輸出很多字符串。
輸入示例:
HI1
HI2
輸出示例:
HI2
HI1
我的代碼:
Back :: Int -> IO()
Back x = do line <- sequence_[getLine|[1..x]]
mapM_ print (reverse line)
要擴展Vitus的注釋,請import Control.Monad
,然后
back count = do
lines <- replicateM count getLine
mapM_ putStrLn (reverse lines)
如果這對您不起作用,請說出您收到的錯誤消息,或給出錯誤輸出的示例。
在這種情況下,我們可以很容易地放棄符號:
back count = mapM_ putStrLn . reverse =<< replicateM count getLine
要么
back count = mapM_ putStrLn =<< liftM reverse (replicateM count getLine)
您可能會或不會發現其中任何一個都更清晰。
請注意,您的函數名稱必須以小寫字母開頭,例如back
。 作為函數名稱Back
是語法錯誤。
另請注意,縮進很重要。 您的問題中的do語句的縮進是錯誤的; 我和melpomene答案中的do塊已正確縮進。
back :: Int -> IO ()
back x = do line <- sequence [getLine | _ <- [1 .. x]]
mapM_ putStrLn (reverse line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.