我的目标是编写Haskell函数,它从输入中读取N行并将它们加入到一个字符串中。下面是第一次尝试:Haskell将[IO字符串]加入IO字符串的方式
readNLines :: Int -> IO String
readNLines n = do
let rows = replicate n getLine
let rowsAsString = foldl ++ [] rows
return rowsAsString
上。这里foldl
Haskell的投诉:
不能匹配预期类型
[a]' against inferred type
(A1 - >乙 - > A1) - > A1 - >并[b] - > A1'
按我的理解是行的[IO String]
类型,是否有可能一些如何在一个IO String
加入该名单?
啊,是的,这是typecheck错误的直接原因......我忽略了,因为即使OP修复后,他们仍然有另一个问题。 – ephemient 2010-12-09 19:34:16
还应该注意'foldl(++)[]`与`concat`相同。 – HaskellElephant 2010-12-09 23:29:35