Haskell IO反向字符串输入

0 io haskell map sequence

我一直收到错误:无法将预期类型'Bool'与实际类型'[t0]'匹配.我正在尝试获取字符串的用户输入,然后以反向ORDER输出许多字符串.

输入示例:

HI1
HI2
Run Code Online (Sandbox Code Playgroud)

示例输出:

HI2
HI1
Run Code Online (Sandbox Code Playgroud)

我的代码:

    Back :: Int -> IO()
    Back x = do line <- sequence_[getLine|[1..x]]
                     mapM_ print (reverse line)
Run Code Online (Sandbox Code Playgroud)

dav*_*420 8

为了扩展Vitus的评论import Control.Monad,那么

back count = do
    lines <- replicateM count getLine
    mapM_ putStrLn (reverse lines)
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用,请说明您收到的错误消息,或提供错误输出的示例.

在这种情况下,我们可以相当容易地放弃表示法:

back count = mapM_ putStrLn . reverse =<< replicateM count getLine
Run Code Online (Sandbox Code Playgroud)

要么

back count = mapM_ putStrLn =<< liftM reverse (replicateM count getLine)
Run Code Online (Sandbox Code Playgroud)

您可能会或可能不会发现其中任何一个更清楚.


请注意,您的函数名称必须以小写字母开头,例如back.Back作为函数名称是语法错误.

另请注意,缩进很重要.你问题中do块的缩进是错误的; 我和melpomene的答案中的do块正确缩进.