Haskell - "'do'结构中的最后一个语句必须是一个表达式"

RCI*_*CIX 15 io syntax monads haskell

就像它在标题中所说:什么The last statement in a 'do' construct must be an expression意思?我结束了我的do块,putStrLn就像我在几个例子中看到的那样,我得到了一个错误.

码:

main = do args <- getArgs
           file <-readFile "TWL06.txt"
           putStrLn results
Run Code Online (Sandbox Code Playgroud)

ADE*_*Ept 25

大多数情况下,这是因为你的代码是错误对齐的,并且编译器假定你的"do"块过早地结束(或者有额外的代码并不真正属于那里)


Chu*_*uck 18

你的最后一句话不是someVar <- putStrLn "hello",不管怎样,是吗?如果你试图在最后一行做一个变量绑定,你会得到那个错误,因为它等同于putStrLn "Hello" >>= \someVar ->- 它希望最后有一个表达式.


Hai*_*Hai 7

不正确的缩进可能会导致此错误.另外,最好不要使用制表符,只使用空格.