ordsets
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.
This module provides exactly the same interface as the module
sets
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
new() -> []
Returns a new empty ordered set.
is_set(Ordset) -> boolean()
Ordset = term()
Returns true
if
is an ordered set of
elements, otherwise false
.
from_list(List) -> Ordset
List = [T]
Ordset = ordset(T)
Returns an ordered set of the elements in
.
is_element(Element, Ordset) -> boolean()
Element = term()
Ordset = ordset(term())
Returns true
if
is an element of
, otherwise false
.
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.
union(Ordset1, Ordset2) -> Ordset3
Returns the merged (union) set of
and
.
union(OrdsetList) -> Ordset
Returns the merged (union) set of the list of sets.
intersection(Ordset1, Ordset2) -> Ordset3
Ordset1 = Ordset2 = Ordset3 = ordset(term())
Returns the intersection of
and
.
intersection(OrdsetList) -> Ordset
Returns the intersection of the non-empty list of sets.
is_disjoint(Ordset1, Ordset2) -> boolean()
Ordset1 = Ordset2 = ordset(term())
Returns true
if
and
are disjoint (have no elements in common),
and false
otherwise.
subtract(Ordset1, Ordset2) -> Ordset3
Ordset1 = Ordset2 = Ordset3 = ordset(term())
Returns only the elements of
which are not
also elements of
.
is_subset(Ordset1, Ordset2) -> boolean()
Ordset1 = Ordset2 = ordset(term())
Returns true
when every element of
is
also a member of
, otherwise false
.
fold(Function, Acc0, Ordset) -> Acc1
Function =
fun((Element :: T, AccIn :: term()) -> AccOut :: term())Ordset = ordset(T)
Acc0 = Acc1 = term()
Fold
over every element in
returning the final value of the accumulator.
filter(Pred, Ordset1) -> Ordset2
Pred = fun((Element :: T) -> boolean())
Ordset1 = Ordset2 = ordset(T)
Filter elements in
with boolean function
.