我是Haskell的新手,在开始ghci
之后我尝试了:
f x = 2 * x
我获得了:
<interactive>:1:4: parse error on input `='
我不明白。
奇怪的是,之前它运作良好。我想我已经完成了错误配置的Haskell。重新安装ghc6并不能解决问题。有关信息,我使用的是Ubuntu 10.4,ghc6的版本是6.12.1-12
答案 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开始,这将不再产生错误。