将三个列表转换为Haskell中的三元组列表

时间:2013-12-20 23:58:07

标签: list haskell tuples

我知道拉链是用对子做的,但我不认为有三重奏的功能吗?我怎么做一个?或者如果失败了,我如何依次将第三个列表的每个成员添加到每个对中,从而制作三元组列表?

2 个答案:

答案 0 :(得分:8)

尝试使用Hoogle

前奏中的一些功能:

zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]

顺便说一下,还原函数存在:

unzip :: [(a, b)] -> ([a], [b])

unzip3 :: [(a, b, c)] -> ([a], [b], [c])

如果需要currying,我们可以添加

uncurry3 f (x, y, z) = f x y z

uncurry3 zip3 :: ([a], [b], [c]) -> [(a, b, c)]

答案 1 :(得分:1)

zip3 (x:xs) (y:ys) (z:zs) = (x,y,z) : zip3 xs ys zs
zip3 _      _      _      = []