从配对列表到配对列表的Haskell

Chi*_*llo 2 haskell

我想创建一个简单的(涉及集和列表)功能,可以执行以下操作,我不知道从哪里开始.

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

Gui*_*ido 6

让我们一步一步来.该功能的两种情况是:

split [] = ???
split ((a,b):ps) = ???
Run Code Online (Sandbox Code Playgroud)

一个案例很容易.

split [] = ([], [])
Run Code Online (Sandbox Code Playgroud)

对于另一个,我们必须以递归方式使用该函数

split ((a,b):ps) = ???? where
                    (as, bs) = split ps
Run Code Online (Sandbox Code Playgroud)

我认为很容易看出解决方案是

split ((a,b):ps) = (a:as, b:bs) where
                     (as, bs) = split ps
Run Code Online (Sandbox Code Playgroud)