如何将箭头用于多个元组?

时间:2012-08-18 13:03:12

标签: haskell tuples generic-programming arrows

foo (a1,a2) (b1,b2) (c1,c2) = (bar a1 b1 c1, bar2 a2 b2 c2)

我有很多具有不同数量的参数元组的构造。在

的情况下
foo' (a1,a2) = (bar' a1, bar2' a2)

我想“嘿,那是箭头!”:

foo' = bar' *** bar2'

但我还不知道是否以及如何将多个输入元组(如第一个代码行中)的函数映射到箭头样式。什么是处理这些功能的通用方法?理想情况下,我总是想要foo = bar ... bar2

1 个答案:

答案 0 :(得分:5)

let (****) = uncurry (***) in (bar1, bar2) **** (a1, a2) **** (b1, b2) **** (c1, c2)