Haskell - « La dernière déclaration dans une construction « faire » doit être une expression »
Question
Comme il est dit dans le titre: Qu'est-ce que The last statement in a 'do' construct must be an expression
signifie? J'ai fini mon bloc do
avec un putStrLn
comme il montre plusieurs exemples que je l'ai vu, et je reçois une erreur.
Code:
main = do args <- getArgs
file <-readFile "TWL06.txt"
putStrLn results
La solution
La plupart du temps, il est parce que votre code est mal aligné et compilateur suppose que votre « faire » a pris fin prématurément bloc (ou a un code supplémentaire qui vraiment n'appartiennent là-bas)
Autres conseils
La dernière ligne n'est pas quelque chose comme someVar <- putStrLn "hello"
, par hasard, est-il? Vous obtiendrez cette erreur si vous essayez de faire une variable de liaison sur la dernière ligne, parce qu'il est équivalent à putStrLn "Hello" >>= \someVar ->
-. Il attend qu'il y ait une expression à la fin
indentation incorrecte peut conduire à cette erreur. Aussi, est bon de ne pas utiliser les onglets, seuls espaces.