【发布时间】:2014-04-08 20:24:07
【问题描述】:
我试图了解什么是有用的以及如何在 Haskell 中实际使用 lambda 表达式。 我不太了解使用 lambda 表达式相对于定义函数的约定方式的优势。 例如,我通常会这样做:
let add x y = x+y
我可以简单地调用
add 5 6
得到 11 的结果 我知道我还可以执行以下操作:
let add = \x->(\y-> x+y)
并得到相同的结果。 但是就像我之前提到的,我不明白使用 lambda 表达式的目的。 此外,我在前奏中输入了以下代码(一个无名函数?),它给了我一条错误消息。
let \x -> (\y->x+y)
parse error (possibly incorrect indentation or mismatched backets)
提前谢谢你!
【问题讨论】:
-
至于
let \x -> (\y->x+y)语句-let语句用于给事物命名。该语句最简单的形式类似于let name = expression。从那时起,您每次想要引用expression时都使用name。在您的示例中,\x -> (\y->x+y)是一个表达式(函数类型的值)。所以,你的整个声明的形式是let expression,没有名字绑定。这样没有意义。让表达什么?