list - 在 Haskell 中合并 3 个列表

标签 list haskell mergesort

我想知道如何将 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/

相关文章:

list - 查找最大整数的索引

列表 .add() 的 C# 问题

haskell - Reader monad - reader vs asks 功能区别?

Haskell:可能的解决方法:将 (Eq a) 添加到

haskell - 余数据类型真的是终端代数吗?

python - 有没有办法可以为列表中的同一个团队加分?

excel - 是否可以使用硬编码的值列表而不是范围公式中的范围?

c++ - 与动态数组合并排序

c - 不兼容的指针类型在 C 中传递参数?

c - 合并排序不适用于包含超过 521096 个元素的整数表