我正在努力理解 Haskell 中的 lambda 表达式。

这是问题所在:

我有一个元组列表 [(a,b),(c,d),(e,f)...] (它可以是任何长度)

我想将两个函数 f1 和 f2 应用于列表中的每个元组,但是这样 f1 应用于第一个元素,f2 应用于每个元组的第二个元素。

因此,例如,如果我有 [(a,b),(c,d)] 我想应用 f1 和 f2 来结束这样的事情: [((f1(a),f2(b)),(f1(c),f2(d))]

我想我可以使用 map 和 lambda 表达式,但最终会出现类型错误。

是否可以用 lambda 表达式和 map 函数做我想要做的事情?

最佳答案

是的:

map (\(x,y) -> (f1 x, f2 y)) list

在 lambda 表达式中箭头的左侧,
我们有模式 (x,y) 来匹配您列表中的元组。
在右侧,我们编写 (f1 x, f2 y) 来创建一个新的 tupel,
其中第一个值是应用于 f1x ,第二个值是应用于 f2y

关于Haskell 将 2 个 lambda 表达式应用于元组列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20310378/

10-13 03:04