Хаскелл - «Последнее утверждение в конструкции« до »должно быть выражением»
Вопрос
Как это говорит в названии: что делает 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 ->
- Ожидается, что в конце будет выражение.
Неправильное отступ может привести к этой ошибке. Кроме того, хорошо не использовать вкладки, только пространства.