Haskell - "La dernière déclaration dans une construction 'do' doit être une expression"
Comme il est dit dans le titre: Ce n' The last statement in a 'do' construct must be an expression
veux dire? J'ai terminé mon do
bloc avec un putStrLn
comme cela se voit dans plusieurs exemples, que j'ai vu, et j'obtiens une erreur.
Code:
main = do args <- getArgs
file <-readFile "TWL06.txt"
putStrLn results
source d'informationauteur RCIX
Vous devez vous connecter pour publier un commentaire.
La plupart du temps, c'est parce que ton code est mal alignée et le compilateur suppose que votre "faire" bloc est terminée prématurément (ou a code supplémentaire qui n'appartient plus vraiment là)
Votre dernière ligne n'est pas quelque chose comme
someVar <- putStrLn "hello"
par hasard, est-il? Vous obtiendrez ce message d'erreur si vous essayez de faire une variable de liaison sur la dernière ligne, car il est équivalent àputStrLn "Hello" >>= \someVar ->
— il s'attend à trouver une expression à la fin.Incorrect indentation peut conduire à cette erreur. Aussi, il est bon de ne pas utiliser les onglets, seulement des espaces.