2011-02-22 56 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