【问题标题】:How to combine two list with the different element?如何将两个列表与不同的元素结合起来?
【发布时间】:2016-03-18 04:38:01
【问题描述】:

如何将两个列表与不同的元素结合起来?这样的问题:

【问题讨论】:

  • 问题是"如何编写setDiff函数"?
  • 我怀疑你的问题被否决了,因为setDiff 通常不被描述为“合并两个列表”。将标题更改为 @soon 建议的内容可能会有所帮助。

标签: list haskell


【解决方案1】:

您正在寻找(\\) 函数:

[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 的一个特例,它允许程序员提供他们自己的相等性测试。

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 2020-01-27
    • 2018-07-27
    • 2021-09-28
    • 1970-01-01
    • 2011-04-30
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多