我的目標是編寫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