我是Haskell的初學者,無法找出一些代碼。我需要做些什麼才能在我的代碼的IO部分獲得正確的類型?Haskell IO代碼不會檢測到
在此先感謝。
loadPeople :: FilePath -> IO [Person]
loadPeople file = do
lines <- getLines file
map parsePerson lines
getLines :: FilePath -> IO [String]
getLines = liftM lines . readFile
parsePerson :: String -> Person
parsePerson line = ...........
map
是強調了紅色Leksah,和我收到的編譯錯誤是:
src\Main.hs:13:3:
Couldn't match expected type `IO [Person]'
against inferred type `[Person]'
In the expression: map parsePerson lines
In the expression:
do { lines <- getLines file;
map parsePerson lines }
In the definition of `loadPeople':
loadPeople file
= do { lines <- getLines file;
map parsePerson lines }
您可以消除「getLines」f通過使用Functors(見:http://learnyouahaskell.com/functors-applicative-functors-and-monoids)。你可以這樣做:「ls < - fmap行$ readFile文件」 – Daniel 2010-11-09 17:34:36