Как он говорит в заголовке: Что делает The last statement in a 'do' construct must be an expression
средний? Я закончил мой do
блок с a putStrLn
как он показывает в нескольких примерах, которые я видел, и я получаю ошибку.
Код:
main = do args <- getArgs
file <-readFile "TWL06.txt"
putStrLn results
В большинстве случаев это происходит потому, что ваш код неправильно выровнен и компилятор предполагает, что ваш блок "do" преждевременно закончился (или имеет дополнительный код, который на самом деле не принадлежит ему)
. Ваша последняя строка - это не что-то вроде someVar <- putStrLn "hello"
, случайно не так? Вы получите эту ошибку, если попытаетесь выполнить привязку переменной в последней строке, потому что это эквивалентно putStrLn "Hello" >> = \ someVar ->
- он ожидает, что в конец.
Неправильный отступ может привести к этой ошибке. Также хорошо не использовать табуляции, а только пробелы.