我想知道如何将 3 个列表合并为一个列表。
这是合并两个列表
merge :: Ord a => [a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) | x <= y = x:merge xs (y:ys)
| otherwise = y:merge (x:xs) ys
如果我想合并三个列表怎么办?
最佳答案
您的 merge
函数已经可以合并两个列表,因为它是一个二元关联操作,你可以这样做:
list1 `merge` (list2 `merge` list3)
或者更一般地说,如果您想合并任意数量的列表:mergeAll :: Ord a => [[a]] -> [a]
mergeAll = foldl merge []
维基百科对 Folding 有很好的解释.
关于list - 在 Haskell 中合并 3 个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64724254/