# ordsets.3erl - Man Page

## Name

ordsets — Functions for manipulating sets as ordered lists.

## Description

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 (*==*).

## Data Types

ordset(T)= [T]

As returned by *new/0*.

## Exports

add_element(Element, Ordset1) -> Ordset2

- Types:
Element = E

Ordset1 = ordset(T)

Ordset2 = ordset(T | E)

Returns a new ordered set formed from *Ordset1* with *Element* inserted.

del_element(Element, Ordset1) -> Ordset2

- Types:
Element = term()

Ordset1 = Ordset2 = ordset(T)

Returns *Ordset1*, but with *Element* removed.

filter(Pred, Ordset1) -> Ordset2

- Types:
Pred = fun((Element :: T) -> boolean())

Ordset1 = Ordset2 = ordset(T)

Filters elements in *Ordset1* with boolean function *Pred*.

fold(Function, Acc0, Ordset) -> Acc1

- Types:
Function =

fun((Element :: T, AccIn :: term()) -> AccOut :: term())

Ordset = ordset(T)

Acc0 = Acc1 = term()

Folds *Function* over every element in *Ordset* and returns the final value of the accumulator.

from_list(List) -> Ordset

- Types:
List = [T]

Ordset = ordset(T)

Returns an ordered set of the elements in *List*.

intersection(OrdsetList) -> Ordset

- Types:
OrdsetList = [ordset(term()), ...]

Ordset = ordset(term())

Returns the intersection of the non-empty list of sets.

intersection(Ordset1, Ordset2) -> Ordset3

- Types:
Ordset1 = Ordset2 = Ordset3 = ordset(term())

Returns the intersection of *Ordset1* and *Ordset2*.

is_disjoint(Ordset1, Ordset2) -> boolean()

- Types:
Ordset1 = Ordset2 = ordset(term())

Returns *true* if *Ordset1* and *Ordset2* are disjoint (have no elements in common), otherwise *false*.

is_element(Element, Ordset) -> boolean()

- Types:
Element = term()

Ordset = ordset(term())

Returns *true* if *Element* is an element of *Ordset*, otherwise *false*.

is_empty(Ordset) -> boolean()

- Types:
Ordset = ordset(term())

Returns *true* if *Ordset* is an empty set, otherwise *false*.

is_set(Ordset) -> boolean()

- Types:
Ordset = term()

Returns *true* if *Ordset* is an ordered set of elements, otherwise *false*.

is_subset(Ordset1, Ordset2) -> boolean()

- Types:
Ordset1 = Ordset2 = ordset(term())

Returns *true* when every element of *Ordset1* is also a member of *Ordset2*, otherwise *false*.

new() -> []

Returns a new empty ordered set.

size(Ordset) -> integer() >= 0

- Types:
Ordset = ordset(term())

Returns the number of elements in *Ordset*.

subtract(Ordset1, Ordset2) -> Ordset3

- Types:
Ordset1 = Ordset2 = Ordset3 = ordset(term())

Returns only the elements of *Ordset1* that are not also elements of *Ordset2*.

to_list(Ordset) -> List

- Types:
Ordset = ordset(T)

List = [T]

Returns the elements of *Ordset* as a list.

union(OrdsetList) -> Ordset

- Types:
OrdsetList = [ordset(T)]

Ordset = ordset(T)

Returns the merged (union) set of the list of sets.

union(Ordset1, Ordset2) -> Ordset3

- Types:
Ordset1 = ordset(T1)

Ordset2 = ordset(T2)

Ordset3 = ordset(T1 | T2)

Returns the merged (union) set of *Ordset1* and *Ordset2*.

## See Also

## Referenced By

erl_syntax_lib.3erl(3), gb_sets.3erl(3), sets.3erl(3), sofs.3erl(3).