Je récupère le contenu d'un fichier et le transforme en une liste de formulaires :
[("abc", 123), ("def", 456)]
avec readFile, lignes et mots.
Pour l'instant, je parviens à transformer la liste résultante en type IO [(String, Int)] .
Mon problème est que lorsque j'essaie de créer une fonction comme celle-ci :
check x = lookup x theMap
J'obtiens cette erreur, que je ne sais pas trop comment résoudre :
Couldn't match expected type `[(a0, b0)]'
with actual type `IO [(String, Int)]'
In the second argument of `lookup', namely `theMap'
theMap est essentiellement ceci :
getLines :: String -> IO [String]
getLines = liftM lines . readFile
tuplify [x,y] = (x, read y :: Int)
theMap = do
list <- getLines "./test.txt"
let l = map tuplify (map words list)
return l
Le contenu du fichier est le suivant :
abc 123
def 456
Quelqu'un peut-il m'expliquer ce que je fais mal ou me montrer une meilleure solution ? J'ai commencé à jouer avec les monades il y a quelques heures et je me heurte à quelques obstacles.
Remerciements