我正在尝试编写一个函数,该函数将组合 2 个列表而不使用“分而治之”。因此我不能使用(++)
.
Prelude> let combineList (x:xs) (y:ys) = if null (y:ys)==True then x:xs else combineList (x:xs++[y]) (ys)
这就是我现在所拥有的,我得到了"Non-exhaustive patterns in function combineList"
。我意识到问题来自if null (y:ys)==True
,因为这个功能有效 -
Prelude> let combineList (x:xs) (y:ys) = if ys==[] then x:xs++[y] else combineList (x:xs++[y]) (ys)
但如果可能的话,我想去掉++[y]
输出中的。
非常感谢您更正代码。