我试图了解什么是有用的以及如何在 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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)