【问题标题】:Haskell - How to continue to code "merge Sorted" a three listsHaskell - 如何继续编码“合并排序”三个列表
【发布时间】:2019-09-08 22:38:49
【问题描述】:

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

我真的是 Haskell 编程的新手,我看过“Learn You a Haskell for Great Good!”作为学习 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)

【问题讨论】:

  • 请包含合并两个排序列表的代码,以便作为起点。
  • 为什么需要合并三个排序列表?
  • @WillNess,我认为这有点早,尤其是考虑到这是一个新人。
  • mergeThreeLists x y z = mergeTwoLists x (mergeTwoLists y z)
  • @AJFarmar 刚刚给了你整个代码。我不确定如何更详细。

标签: list sorting haskell merge


【解决方案1】:

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

【讨论】:

  • ...和,内联、融合、优化! :)
  • @WillNess,是的,当然。但这对于这个练习来说似乎有点过头了。
猜你喜欢
  • 2012-01-11
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 2011-05-17
  • 2015-05-12
  • 1970-01-01
相关资源
最近更新 更多