Я начинаю с Haskell, и мне трудно понять какой-то код. Что мне нужно сделать, чтобы получить типы прямо в этой секции ввода-вывода моего кода?Haskell IO код не typecheck
Заранее спасибо.
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» е с помощью функторов (см .: http://learnyouahaskell.com/functors-applicative-functors-and-monoids). Вы можете сделать: «ls <- fmap lines $ readFile file" – Daniel