我有以下函数,它接受一个列表并返回在给定元素n处拆分的两个子列表.但是,我只需要将它分成两半,奇数长度列表具有更大的第一个子列表
splitlist :: [a] -> Int -> ([a],[a])
splitlist [] = ([],[])
splitlist l@(x : xs) n | n > 0 = (x : ys, zs)
| otherwise = (l, [])
where (ys,zs) = splitlist xs (n - 1)
Run Code Online (Sandbox Code Playgroud)
我知道我需要将签名更改为[a] - >([a],[a]),但是在代码中我应该放置像length(xs)这样的东西,这样我就不会破坏递归?谢谢.
haskell ×1