Erlang Thursday – ordsets:is_subset/2

今天的Erlang Thursday讲的是 ordsets:is_subset/2.

ordsets:is_subset/2 有两个有序集合的入参,函数会检测第一个入参是否是第二入参的子集。例如一个集合A,它是另一个集合B的子集,则集合A的每一个元素必须是集合B的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SetA = ordsets:from_list(lists:seq(1, 10)).
% [1,2,3,4,5,6,7,8,9,10]
SetB = ordsets:from_list(lists:seq(2, 10, 2)).
% [2,4,6,8,10]
SetC = ordsets:from_list(lists:seq(1, 15, 3)).
% [1,4,7,10,13]
EmptySet = ordsets:new().
% []
ordsets:is_subset(SetB, SetA).
% true
ordsets:is_subset(SetA, SetB).
% false
ordsets:is_subset(SetC, SetA).
% false

有几个事实要跟不熟悉集合理论的同学讲讲。首先,空集合是所有集合的子集;其次,一个集合是它自己的子集;最后,如果集合B是集合A的超集,则集合A是集合B的子集。

1
2
3
4
5
6
7
8
9
10
ordsets:is_subset(EmptySet, SetA).
% true
ordsets:is_subset(EmptySet, SetB).
% true
ordsets:is_subset(EmptySet, SetC).
% true
ordsets:is_subset(EmptySet, EmptySet).
% true
ordsets:is_subset(SetA, SetA).
% true

原文链接: https://www.proctor-it.com/erlang-thursday-ordsets-is_subset-2/