如何将两个列表与不同的元素组合?

时间:2016-03-18 04:38:02

标签: list haskell

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

enter image description here

1 个答案:

答案 0 :(得分:6)

您正在寻找(\\)功能:

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