就像它在标题中所说:什么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 ->
——它期望最后有一个表达式。
不正确的缩进会导致此错误。另外,最好不要使用制表符,只使用空格。