c a = (a\\).(a\\)
我知道(\\)= foldl (flip delete)
它是标准功能。
delete x [] = []
delete x (y:ys) = if x == y then ys else y : delete x ys
我想知道我能找出c
函数的作用。
我该怎么办?
如果我只关注(a\\)
delete从列表中获取要删除的列表和x。
(a\\)
已经列出了一个列表,因此我们需要发送一个我们想要删除的值x。 a=[a1,a2,a3]
foldl => (a1 'f' x) 'f' a2) 'f' a3
其中f
为flip delete
。
所以从a的第一个元素中删除x并从结果列表中删除子列表a2和a3。 所以我们将获得a1独有的所有值。它似乎是一个列表列表。 不知道这是否正确。
答案 0 :(得分:5)
在具有唯一元素的列表中使用时,(as \\ bs)
就像设置差异,即as
的一组也不是bs
。因此
c as bs = as \\ (as \\ bs)
因此,它计算as
的{{1}}集也是bs
,因此也是交集。