Haskell GHCI编译器:在定义和声明一个简单函数时,在repl中解析错误

时间:2014-02-21 19:23:58

标签: haskell ghci

我正在阅读“了解你的哈斯克尔”一书。

我正在尝试定义这个简单的函数,但编译器正在吐出它。它可能是非常基本和简单的东西,但我是一个完整的Haskell新手:

GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> doubleMe x = x + x

<interactive>:2:12: parse error on input `='

前奏&GT;

2 个答案:

答案 0 :(得分:5)

如果你read the book仔细地说,(强调我的话):

  

打开您喜欢的文本编辑器并打入此功能,该功能需要一个数字并将其乘以2。

    doubleMe x = x + x  

对于ghc来说这很好,因为它可以理解它是一个函数声明(并且书中没有告诉你在ghci中尝试它。事实上,shortly after它解释了let如何能够使用“在GHCI中定义一个名称。在GHCI中使a = 1相当于在脚本中编写a = 1然后加载它。”)。为了使ghci明白您正在定义一个函数,您需要使用let

Prelude> let doubleMe x = x + x
Prelude> doubleMe 10
20

答案 1 :(得分:1)

在GHCi中,您使用let关键字绑定新标识符。

> let doubleMe x = x + x
> doubleMe 3
> 6