如何将两个列表与不同的元素组合?像这样的问题:
答案 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
的一个特例,它允许程序员提供自己的相等测试。