我正在阅读这本书Natural Language Processing for Working Programmers。这本书使用了Haskell,我没有太多的经验。下面的代码在GHCI中引发错误
:{
do
l <- [0..9]
ps <- (\x -> [x-1, x+2]) l
return ps
:}
这是返回的错误消息
The last statement in a 'do' construct must be an expression
我遇到的所有答案似乎都暗示这是一个缩进错误,但据我所知,缩进似乎是正确的。任何想法可能是什么问题?
答案 0 :(得分:4)
我将您的代码输入到ghci 7.0.3中并且没有出错。
Prelude> :{
Prelude| do
Prelude| l <- [0..9]
Prelude| ps <- (\x -> [x-1, x+2]) l
Prelude| return ps
Prelude| :}
[-1,2,0,3,1,4,2,5,3,6,4,7,5,8,6,9,7,10,8,11]
编辑:当我在Ubuntu 10.04中使用ghci 6.12.1时,我会遇到与您相同的错误。
答案 1 :(得分:0)
:{
和:}
的符号不是Haskell的一部分,我认为这与您正在阅读的文本有关。此外,您发布的代码有一个lambda用作列表monad。试试这个:
do
l <- [0..9]
ps <- (\x -> [x-1, x+2]) l
return ps