2014-11-01 88 views
1

我在Windows 7上使用ghci编译器与版本7.8.3。我得到错误消息显示输入` - >'解析错误。在haskell中,我有以下代码用于lambda表达式。haskell得到解析错误输入` - >'

附加= \ XY - > X + Y

+0

请注意'= \'是一个运算符。既然你想给名称'add'分配一个lambda表达式,你需要一个空格:'= \'。 – 2014-11-01 18:51:25

回答

5

ghci交互定义一个函数,你必须使用绑定它let这样的:

let add = \x y -> x + y 
+1

如果它是全局声明的函数,则不适用。如果是这样的话,它应该只是用加法形式'add x y = x + y',或者只是'add =(+)'来写。 – Carcigenicate 2014-11-01 18:13:22

+0

另外,'='和'\'必须用空格分隔,因为'= \'是一个合法的操作符名称。 – 2014-11-01 18:13:36

2

我只是写:

add = \x y -> x + y 

main = do 
    print $ add 1 2 

它编译并输出3.

除非哟乌尔意图是,虽然练习unsugared代码,我会写出来的:

add x y = x + y 

或者

add = (+) 

这是“点免费”的形式。