Haskell-如何继续编码“合并排序”三个列表

时间:2019-04-18 14:51:16

标签: list sorting haskell merge

我知道如何在Haskell中合并两个排序的列表,但是,我不知道如何合并三个排序的列表。我写了一些代码,下一步该怎么做?

我真的是Haskell编程的新手,我观看了“了解Haskell带来的好处!”作为学习Haskell的开始。我尝试遵循两个已排序列表合并的格式:

mergeS :: (Ord a) => [a] -> [a] -> [a] -> [a]
mergeS [] [] [] = []
mergeS (x:xs) [] [] = (x:xs)
mergeS [] (y:ys) [] = (y:ys)
mergeS [] [] (z:zs) = (z:zs)
mergeS (x:xs) (y:ys) (z:zs) -- I do not know how to write from here

正确的答案应该是这样的:

mergeS ::(Ord a)=> [a]-> [a]-> [a]-> [a]

mergeTwoLists :: Ord a => [a]-> [a]-> [a]

...

mergeS x y z = mergeTwoLists x(mergeTwoLists y z)

1 个答案:

答案 0 :(得分:3)

您知道如何合并两个排序的列表。现在只需执行两次。