Haskell — “Последний оператор в 'действительно' создает, должно быть выражение”

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

Код:

main = do args <- getArgs
           file <-readFile "TWL06.txt"
           putStrLn results
15
задан Elliot Cameron 21 April 2011 в 22:19
поделиться

3 ответа

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

.
25
ответ дан 1 December 2019 в 00:20
поделиться

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

18
ответ дан 1 December 2019 в 00:20
поделиться

Неправильный отступ может привести к этой ошибке. Также хорошо не использовать табуляции, а только пробелы.

7
ответ дан 1 December 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: