我正在努力理解 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,其中第一个值是应用于
f1
的 x
,第二个值是应用于 f2
的 y
。关于Haskell 将 2 个 lambda 表达式应用于元组列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20310378/