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

Oka*_*eno 8 haskell

我正在阅读" 自然语言处理工作程序员 "一书.这本书使用了Haskell,我没有太多的经验.下面的代码在GHCI中引发错误

:{
do
  l <- [0..9]
  ps <- (\x -> [x-1, x+2]) l
  return ps
:}
Run Code Online (Sandbox Code Playgroud)

这是返回的错误消息

The last statement in a 'do' construct must be an expression

我遇到的所有答案似乎都表明这是一个缩进错误,但据我所知,缩进似乎是正确的.任何想法可能是什么问题?

dav*_*420 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]
Run Code Online (Sandbox Code Playgroud)

编辑:当我使用 Ubuntu 10.04 中打包的 ghci 6.12.1 时,我得到了与你相同的错误。