Haskellinput错误parsing错误`='

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

 fx = 2 * x 

我得到了:

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

我不明白。

奇怪的是,它之前运作良好。 我想我做了错误configuration的Haskell。 重新安装ghc6并不能解决问题。

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

在GHCi 7.x或更低版本中,你需要一个let定义的东西。

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

从GHC 8.0.1开始,GHCi支持顶级绑定 ,因此OP的代码将不会改变。

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

当你input一个Haskell源文件时,

 fx = 2 * x 

是正确的。

当你直接inputghci时,你需要在行首inputlet

 let fx = 2 * x 

使用ghci的一个很好的经验法则是你input的任何代码应该符合do-block语义; 也就是说,你可以在句法上假定你正在编写IO monad(如果这是新的术语,别担心,我强烈推荐阅读本教程 )。

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

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