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

时间:2011-05-31 08:35:30

标签: haskell

我是Haskell的新手,在开始ghci之后我尝试了:

f x = 2 * x

我获得了:

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

我不明白。

奇怪的是,之前它运作良好。我想我已经完成了错误配置的Haskell。重新安装ghc6并不能解决问题。

有关信息,我使用的是Ubuntu 10.4,ghc6的版本是6.12.1-12

4 个答案:

答案 0 :(得分:158)

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

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

从GHC 8.0.1开始,top-level bindings are supported in GHCi,因此OP的代码无需更改即可运行。

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

答案 1 :(得分:50)

当您键入Haskell源文件时,

f x = 2 * x

是对的。

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

let f x = 2 * x

答案 2 :(得分:20)

使用ghci的一个好的经验法则是你输入的任何代码都应该符合do-block语义;也就是说,您可以假设语法您正在IO monad中编程(如果这是新术语,请不要担心!我强烈建议您阅读tutorial)。

This回答用一个例子说明了这一点,并可能提供更多有关IO和ghci性质的工作见解。

答案 3 :(得分:4)

从GHC 8.0.1开始,这将不再产生错误。