List 交叉路口对面的Haskell(列表)

List 交叉路口对面的Haskell(列表),list,haskell,intersect,List,Haskell,Intersect,我试图得到两个列表相交的“对立面”: 比如: let all=[1..5] 设掩码=[2,3] 让res=??? --让res=all`intersect`mask您正在查找set difference,它是来自以下位置的\\运算符: 我认为这称为相对补码。@user914584但请注意,(\\)只从第一个列表中删除第二个元素中的每个元素,例如[1,2,3,2]\\[2]=[1,3,2]。如果这不适合您的用例,那么可以选择先过滤(`notElem`second)。 let all = [1..

我试图得到两个列表相交的“对立面”: 比如:

let all=[1..5]
设掩码=[2,3]
让res=???
--让res=all`intersect`mask您正在查找set difference,它是来自以下位置的
\\
运算符:


我认为这称为相对补码。@user914584但请注意,
(\\)
只从第一个列表中删除第二个元素中的每个元素,例如
[1,2,3,2]\\[2]=[1,3,2]
。如果这不适合您的用例,那么可以选择先过滤(`notElem`second)
let all  = [1..5]
let mask = [2,3]
let res  = ???
-- let res = all `intersect` mask <-- reverse/opposite ?
-- I want to get [1,4,5] ?
Prelude> import Data.List ((\\))
Prelude Data.List> let all  = [1..5]
Prelude Data.List> let mask = [2,3]
Prelude Data.List> all \\ mask
[1,4,5]