[英]Haskell ::Couldn't match type `Char' with `[Char]'
我想要一个在遇到空行时取行并反向打印的程序。 这是我的代码。
back :: IO()
back = do
line <- getLine
if (not $ null line) then do
mapM_ putStrLn (reverse line)
else return()
当我尝试运行它时,它给出了一个错误。
Char' with
[Char]' 匹配预期:[String] 实际:[Char]
mapM_', namely
(reverse line)' 在一个 'do' 块的 stmt 中: mapM_ putStrLn (reverse line) 在表达式中: do mapM_ putStrLn (reverse line) | 6 | mapM_ putStrLn(反向行) | ^^^^^^^^^^^^这里怎么了? line
是一个String
。 由于您使用mapM_ putStrLn
,它需要一个字符串列表,因此mapM_ putStrLn:: [String] -> IO ()
。
如果您想反转每一行,还是反转这些行本身,尚不完全清楚。 如果是前者,您可以使用:
back :: IO()
back = do
line <- getLine
if not (null line) then do
putStrLn (reverse line)
back
else return()
在后者的情况下,您可以使用递归,并首先递归back
,然后打印该行:
back :: IO()
back = do
line <- getLine
if not (null line) then do
back
putStrLn line
else return()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.