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