Module

pooka/set

src/pooka/set.pooka

A set keeps one chair for each distinct guest.

Store membership through an immutable dictionary with Nil values. Set operations return new sets, enumeration order is unspecified, and equals compares membership rather than the identity of captured storage closures.

Pooka
import pooka/set

assert set.from_list([1, 1, 2]).size() == 2

API reference

class

Set

src/pooka/set.pooka:22
class Set(a)

An immutable membership collection. Equality of contents is provided by equals; storage handles themselves have identity.

constructor

new

src/pooka/set.pooka:27
new(values: Dict(a, Nil))
INFERREDfn(pooka/dict.Dict(a, Nil)) -> pooka/set.Set(a)

Create the value from its declared fields. Public factory functions keep the storage details out of ordinary calling code.

method

to_list

src/pooka/set.pooka:39
to_list() -> List(a)
INFERREDfn() -> List(a)

Enumerate members in unspecified order.

Pooka
import pooka/list
import pooka/set

assert list.contains(set.from_list([1, 2]).to_list(), 1)
method

insert

src/pooka/set.pooka:50
insert(value: a) -> Set(a)
INFERREDfn(a) -> pooka/set.Set(a)

Return a set containing the value.

Pooka
import pooka/set

assert set.empty().insert(1).contains(1)
method

delete

src/pooka/set.pooka:61
delete(value: a) -> Set(a)
INFERREDfn(a) -> pooka/set.Set(a)

Return a set without the value; absence is harmless.

Pooka
import pooka/set

assert set.from_list([1]).delete(1).is_empty()
method

contains

src/pooka/set.pooka:72
contains(value: a) -> Bool
INFERREDfn(a) -> Bool

Check whether a value is a member.

Pooka
import pooka/set

assert set.from_list([1, 2]).contains(2)
method

size

src/pooka/set.pooka:83
size() -> Int
INFERREDfn() -> Int

Count distinct members.

Pooka
import pooka/set

assert set.from_list([1, 1, 2]).size() == 2
method

is_empty

src/pooka/set.pooka:94
is_empty() -> Bool
INFERREDfn() -> Bool

Ask whether the set has no members.

Pooka
import pooka/set

assert set.empty().is_empty()
method

union

src/pooka/set.pooka:105
union(right: Set(a)) -> Set(a)
INFERREDfn(pooka/set.Set(a)) -> pooka/set.Set(a)

Keep members present in either set.

Pooka
import pooka/set

assert set.from_list([1]).union(set.from_list([2])).size() == 2
method

intersection

src/pooka/set.pooka:116
intersection(right: Set(a)) -> Set(a)
INFERREDfn(pooka/set.Set(a)) -> pooka/set.Set(a)

Keep members present in both sets.

Pooka
import pooka/set

assert set.from_list([1, 2]).intersection(set.from_list([2, 3])).equals(set.from_list([2]))
method

difference

src/pooka/set.pooka:127
difference(right: Set(a)) -> Set(a)
INFERREDfn(pooka/set.Set(a)) -> pooka/set.Set(a)

Keep left-hand members absent from the right-hand set.

Pooka
import pooka/set

assert set.from_list([1, 2]).difference(set.from_list([2])).equals(set.from_list([1]))
method

equals

src/pooka/set.pooka:139
equals(right: Set(a)) -> Bool
INFERREDfn(pooka/set.Set(a)) -> Bool

Compare membership rather than the identity of captured dictionary storage.

Pooka
import pooka/set

assert set.from_list([1, 2]).equals(set.from_list([2, 1]))
method

is_subset

src/pooka/set.pooka:150
is_subset(right: Set(a)) -> Bool
INFERREDfn(pooka/set.Set(a)) -> Bool

Require every member of this set to belong to the right-hand set.

Pooka
import pooka/set

assert set.from_list([1]).is_subset(set.from_list([1, 2]))
function

empty

src/pooka/set.pooka:162
empty() -> Set(a)
INFERREDfn() -> pooka/set.Set(a)

Open an empty set.

Pooka
import pooka/set

assert set.empty().is_empty()
function

from_list

src/pooka/set.pooka:173
from_list(values: List(a)) -> Set(a)
INFERREDfn(List(a)) -> pooka/set.Set(a)

Build membership from a list, forgetting repeated values.

Pooka
import pooka/set

assert set.from_list([1, 1, 2]).size() == 2