Хаскелл - «Последнее утверждение в конструкции« до »должно быть выражением»

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

  •  19-09-2019
  •  | 
  •  

Вопрос

Как это говорит в названии: что делает The last statement in a 'do' construct must be an expression иметь в виду? Я закончил do Блок с putStrLn Как это показывает в нескольких примерах, которые я видел, и я получаю ошибку.

Код:

main = do args <- getArgs
           file <-readFile "TWL06.txt"
           putStrLn results
Это было полезно?

Решение

В большинстве случаев это потому, что ваш код неправильно выровнен, и компилятор предполагает, что ваш блок «DO» закончился преждевременно (или имеет дополнительный код, который на самом деле не принадлежит)

Другие советы

Ваша последняя строка не что -то вроде someVar <- putStrLn "hello", случайно, не так ли? Вы получите эту ошибку, если попытаетесь сделать привязку переменной на последней строке, потому что она эквивалентна к putStrLn "Hello" >>= \someVar -> - Ожидается, что в конце будет выражение.

Неправильное отступ может привести к этой ошибке. Кроме того, хорошо не использовать вкладки, только пространства.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top