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

Yul*_*ama -3 haskell list

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

在此输入图像描述

Jak*_*ell 6

你正在寻找这个(\\)功能:

[2,4,6,8,10] \\ [3,4,5,6] == [2,8,10]
Run Code Online (Sandbox Code Playgroud)

Haskell带有许多内置函数.特别是对于像这样的简单任务,你经常会找到一个能完成这项工作的人.但你怎么找到一个?

第一步是确定所需功能的类型.在这种情况下,您正在寻找一个函数,它接受两个具有相同类型(a)元素的列表,并生成一个包含相同类型元素的列表:

[a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

接下来搜索Hoogle查找与该类型匹配的函数.(\\)接近结果的顶部.它包括以下文档:

\\函数是列表差异(非关联).在结果中xs \\ ys,ys依次删除了每个元素的第一次出现(如果有的话)xs.从而

(xs ++ ys) \\ xs == ys.
Run Code Online (Sandbox Code Playgroud)

这是一个特例deleteFirstsBy,允许程序员提供自己的相等测试.