Functions for manipulating sets as ordered lists.
Sets are collections of elements with no duplicate elements.
An ordset
is a representation of a set, where an ordered
list is used to store the elements of the set. An ordered list
is more efficient than an unordered list. Elements are ordered
according to the Erlang term order.
This module provides the same interface as the
sets(3)
module
but with a defined representation. One difference is
that while sets
considers two elements as different if they
do not match (=:=
), this module considers two elements as
different if and only if they do not compare equal (==
).
Functions
add_element(Element, Ordset1) -> Ordset2
Returns a new ordered set formed from
with
inserted.
del_element(Element, Ordset1) -> Ordset2
Element = term()
Ordset1 = Ordset2 = ordset(T)
Returns
, but with
removed.
filter(Pred, Ordset1) -> Ordset2
Pred = fun((Element :: T) -> boolean())
Ordset1 = Ordset2 = ordset(T)
Filters elements in
with boolean function
.
fold(Function, Acc0, Ordset) -> Acc1
Function =
fun((Element :: T, AccIn :: term()) -> AccOut :: term())Ordset = ordset(T)
Acc0 = Acc1 = term()
Folds
over every element in
and returns the final value of the
accumulator.
from_list(List) -> Ordset
List = [T]
Ordset = ordset(T)
Returns an ordered set of the elements in
.
intersection(OrdsetList) -> Ordset
Returns the intersection of the non-empty list of sets.
intersection(Ordset1, Ordset2) -> Ordset3
Ordset1 = Ordset2 = Ordset3 = ordset(term())
Returns the intersection of
and
.
is_disjoint(Ordset1, Ordset2) -> boolean()
Ordset1 = Ordset2 = ordset(term())
Returns true
if
and
are disjoint (have no elements in common),
otherwise false
.
is_element(Element, Ordset) -> boolean()
Element = term()
Ordset = ordset(term())
Returns true
if
is an element of
, otherwise false
.
is_empty(Ordset) -> boolean()
Ordset = ordset(term())
Returns true
if
is an empty set,
otherwise false
.
is_set(Ordset) -> boolean()
Ordset = term()
Returns true
if
is an ordered set
of elements, otherwise false
.
is_subset(Ordset1, Ordset2) -> boolean()
Ordset1 = Ordset2 = ordset(term())
Returns true
when every element of
is also a member of
, otherwise
false
.
new() -> []
Returns a new empty ordered set.
subtract(Ordset1, Ordset2) -> Ordset3
Ordset1 = Ordset2 = Ordset3 = ordset(term())
Returns only the elements of
that are not
also elements of
.
union(OrdsetList) -> Ordset
Returns the merged (union) set of the list of sets.