输入‘ =’的 Haskell 错误解析错误

我是 Haskell 的新员工,在开始 ghci之后,我尝试过:

f x = 2 * x

我得到了:

<interactive>:1:4: parse error on input `='

我不明白。

奇怪的是,它以前工作得很好。我想我配置错了 Haskell。重新安装 ghc6并不能解决这个问题。

为了了解更多信息,我使用 Ubuntu 10.4,ghc6的版本是6.12.1-12

63596 次浏览

在 GHCi 7.x 或更低版本中,需要一个 let来定义内容。

Prelude> let f x = x * 2
Prelude> f 4
8

从 GHC8.0.1,GHCi 支持顶级绑定开始,所以 OP 的代码不需要更改就可以工作。

GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/  :? for help
Prelude> f x = x * 2
Prelude> f 4
8

当您键入 Haskell 源文件时,

f x = 2 * x

是正确的。

当您直接输入 ghci 时,您需要在行的开头输入 let:

let f x = 2 * x

使用 ghci 的一个很好的经验法则是,您输入的任何代码都应该符合 do-block 语义; 也就是说,您可以假定 从句法上来说是在 IO 单子内编程的(如果这是新的术语,不用担心!)!我强烈建议通读这本 教程)。

这个 答案通过一个例子说明了这一点,并且可以提供对 IO 和 ghci 本质的更多工作见解。

从 GHC8.0.1开始,这将不再产生错误。