错误:输入`='时解析错误

blu*_*sky 3 haskell ghci

我正在阅读Haskell的书:http://learnyouahaskell.com/types-and-typeclasses

当我在翻译中输入这一行时,

removeNonUppercase st = [c | c <- st, c `elem` ['A' .. 'Z']]
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

parse error on input `='
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个错误?

ham*_*mar 5

在解释器或GHCi脚本文件(即非Haskell模块)中定义变量或函数时,需要使用let关键字.

> let removeNonUppercase st = [c | c <- st, c `elem` ['A' .. 'Z']]
Run Code Online (Sandbox Code Playgroud)

这是因为解释器本质上就像你在全局do块中一样.您的代码在Haskell源文件中可以正常运行.

如果你在解释器之外遇到这个错误,你可能要么弄乱了缩进,要么在附近的代码中有一些其他的语法错误.