Haskell - “L'ultima istruzione in un costrutto 'fare' deve essere un'espressione”
Domanda
Come si dice nel titolo: Cosa significa The last statement in a 'do' construct must be an expression
significa? Ho finito il mio blocco do
con una putStrLn
come si vede in molti esempi che ho visto, e si ottiene un errore.
Codice:
main = do args <- getArgs
file <-readFile "TWL06.txt"
putStrLn results
Soluzione
La maggior parte del tempo, è perché il codice è mis-allineati e compilatore presuppone che il blocco "fare" è stata interrotta (o ha il codice in più che davvero non ci appartengono)
Altri suggerimenti
La tua ultima riga non è qualcosa come someVar <- putStrLn "hello"
, per caso, non è vero? Otterrete questo errore se si tenta di fare una variabile vincolante per l'ultima riga, perché è equivalente a putStrLn "Hello" >>= \someVar ->
-. Si aspetta che ci sia un'espressione alla fine
indentazione non corretto può portare a questo errore. Inoltre, è bene non utilizzare le schede, solo spazi.