繁体   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