我需要一个递归函数,它从元组列表中返回一个列表元组。换句话说,它的类型签名将是
func :: [(a,b)] -> ([a],[b])
以下是一个例子:
λ> func [(1,3), (2,4)]
([1,2], [3,4])
我创建了两个函数来返回元组中第一个和第二个元素的列表并加入它们,但是我只想要一个递归函数来执行它。
答案 0 :(得分:8)
您正在寻找unzip
:
unzip :: [(a, b)] -> ([a], [b])
作为一般建议,当您知道类型签名并且您想知道是否存在具有该类型签名的任何已存在的函数时,Hoogle是一个不错的选择; searching for that type signature发现unzip
是第一个也是唯一的结果。