递归地将元组列表转换为列表元组

Ani*_*ear 3 haskell tuples list

我需要一个递归函数,它从元组列表中返回一个列表元组.换句话说,它的类型签名就是

func :: [(a,b)] -> ([a],[b])
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

?> func [(1,3), (2,4)]
([1,2], [3,4])
Run Code Online (Sandbox Code Playgroud)

我做了两个函数来从元组返回第一个和第二个元素的列表并加入它们,但我只想要一个递归函数来完成它.

ick*_*fay 8

您正在寻找unzip:

unzip :: [(a, b)] -> ([a], [b])
Run Code Online (Sandbox Code Playgroud)

作为一般建议,当您知道类型签名并且您想知道是否存在具有该类型签名的任何已存在的函数时,Hoogle是一个不错的选择; 搜索该类型签名查找unzip作为其第一个也是唯一的结果.