Haskell - “A última declaração em uma construção 'do' deve ser uma expressão”

StackOverflow https://stackoverflow.com/questions/2016963

  •  19-09-2019
  •  | 
  •  

Pergunta

Como diz no título: o que faz The last statement in a 'do' construct must be an expression significa? Eu terminei meu do Bloqueie com um putStrLn Como mostra em vários exemplos que vi, e recebo um erro.

Código:

main = do args <- getArgs
           file <-readFile "TWL06.txt"
           putStrLn results
Foi útil?

Solução

Na maioria das vezes, é porque seu código está mal alinhado e o compilador assume que seu bloco "do" do "terminou prematuramente (ou tem código extra que realmente não pertence a lá)

Outras dicas

Sua última linha não é algo como someVar <- putStrLn "hello", por acaso, é? Você receberá esse erro se tentar fazer uma variável vinculativa na última linha, porque é equivalente a putStrLn "Hello" >>= \someVar -> - espera que haja uma expressão no final.

O recuo incorreto pode levar a esse erro. Além disso, é bom não usar guias, apenas espaços.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top