如何找到未包含在另一个haskell列表中的列表元素

Myk*_*yke 1 haskell

我是haskell的新手,想要在两个haskell列表之间设置区别.举例来说,我有列表ab和希望a-b,即[4,5,6,7].

let a = [1,2,3,4,5,6,7] 
let b = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

是否有内置函数来执行此操作.

bhe*_*ilr 8

你可以使用(\\)运算符Data.List,警告它只删除每个运算符的第一个实例,所以

> [1..7] \\ [1..3]
[4,5,6,7]
> [1,1,1] \\ [1,2]
[1,1]
Run Code Online (Sandbox Code Playgroud)

如果您想要真正的"设置差异",请使用Data.Set:

> import qualified Data.Set as Set
> Set.fromList [1..7] Set.\\ Set.fromList [1..3]
> Set.fromList [1,1,1]
fromList [1]
> Set.fromList [1,1,1] Set.\\ Set.fromList [1,2]
fromList []
Run Code Online (Sandbox Code Playgroud)