我试图了解什么是有用的以及如何在 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)
提前谢谢您!
最佳答案
许多 Haskell 函数都是“高阶函数”,即它们期望其他函数作为参数。通常,我们想要传递给此类高阶函数的函数仅在程序中的特定点使用一次。使用 lambda 表达式比为此目的定义新的本地函数更方便。
下面是一个从给定列表中过滤所有大于 10 的偶数的示例:
ghci> filter (\ x -> even x && x > 10) [1..20]
[12,14,16,18,20]
这是另一个遍历列表的示例,对于每个元素 x
计算项 x^2 + x
:
ghci> map (\ x -> x^2 + x) [1..10]
[2,6,12,20,30,42,56,72,90,110]
关于function - Haskell - lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22220439/