Je suis un débutant avec Haskell et je n'arrive pas à trouver du code. Que dois-je faire pour obtenir les types sur cette section IO de mon code?Le code IO de Haskell ne correspond pas
Merci d'avance.
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
est souligné en rouge dans Leksah, et l'erreur de compilation que je reçois est:
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 }
Vous pouvez éliminer les "getLines" f en utilisant Functors (voir: http://learnyouahaskell.com/functors-applicative-functors-and-monoids). Vous pouvez faire: "ls <- fmap lignes $ fichier readFile" – Daniel