Ant*_*ni4 2 lambda dictionary haskell
我正在努力理解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 (f1 *** f2) list
Run Code Online (Sandbox Code Playgroud)
这是使用Control.Arrow提供(***)操作员的事实,这说明了这一点
f *** g = \(x, y) -> (f x, g y)
Run Code Online (Sandbox Code Playgroud)
是的:
map (\(x,y) -> (f1 x, f2 y)) list
Run Code Online (Sandbox Code Playgroud)
在lambda exssion中箭头的左侧,我们有一个(x,y)匹配列表中元组的模式.在右侧,我们编写(f1 x, f2 y)以创建一个新的tupel,其中第一个值f1应用于x第二个值并f2应用第二个值y.
| 归档时间: |
|
| 查看次数: |
3600 次 |
| 最近记录: |