gpt4 book ai didi

function - Haskell - lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 21:18:19 25 4
gpt4 key购买 nike

我试图了解什么是有用的以及如何在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com