繁体   English   中英

Haskell::无法将“Char”类型与“[Char]”匹配

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM