2011-02-22 61 views
5

是否有一个库,通过模板哈斯克尔(或使用其他方法)具有元组函数的n元版本的库,如first***等。元组函数的N元版本

理想情况下,我想能够说

$(select 3 [0, 1]) 

我们使拉姆达

\(x, y, z) -> (x, y) 

和通用***的功能

$(tapply 3 [(0, "f"), (1, "g"), (2, "h")]) 

这将使拉姆达

\f g h (x, y, z) -> (f x, g y, h z) 

其他n-ary功能也很好,但这些是我目前需要的两个。

回答

2

tuple库提供了许多这些类型的功能。

1

一般来说,我会说你想使用一个适当的ADT代替,而像bifunctor这样的库,或者如果它比这个更复杂的话,一个合适的generics库。 (该链接可能更新,如果有疑问,并且您没有特别高的性能要求,请使用SYB