【发布时间】:2016-03-18 04:38:01
【问题描述】:
如何将两个列表与不同的元素结合起来?这样的问题:
【问题讨论】:
-
问题是"如何编写setDiff函数"?
-
我怀疑你的问题被否决了,因为
setDiff通常不被描述为“合并两个列表”。将标题更改为 @soon 建议的内容可能会有所帮助。
如何将两个列表与不同的元素结合起来?这样的问题:
【问题讨论】:
setDiff 通常不被描述为“合并两个列表”。将标题更改为 @soon 建议的内容可能会有所帮助。
您正在寻找(\\) 函数:
[2,4,6,8,10] \\ [3,4,5,6] == [2,8,10]
Haskell 带有很多内置函数。特别是对于像这样的简单任务,您经常会找到一个可以完成这项工作的任务。但是如何找到呢?
第一步是确定所需函数的类型。在这种情况下,您正在寻找一个函数,该函数接受两个具有相同类型元素的列表 (a),并生成一个具有相同类型元素的列表:
[a] -> [a] -> [a]
下一个search Hoogle 用于匹配该类型的函数。 (\\) 位于结果顶部附近。它包括以下文档:
\\函数是列表差异(非关联)。在xs \\ ys的结果中,ys的每个元素的第一次出现依次(如果有)已从xs中删除。因此(xs ++ ys) \\ xs == ys.它是
deleteFirstsBy的一个特例,它允许程序员提供他们自己的相等性测试。
【讨论】: