簡體   English   中英

Haskell IO反向字符串輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM