tomo/api/sets.md
2024-08-18 18:23:32 -04:00

4.3 KiB
Raw Blame History

Sets

Sets represent an unordered collection of unique elements. These are implemented using hash tables.

a := {10, 20, 30}
b := {20, 30}
>> a:overlap(b)
= {20}

Heres the Markdown documentation for set functions:


Set Functions

has

Description:
Checks if the set contains a specified item.

Usage:

has(set:{T}, item:T) -> Bool

Parameters:

  • set: The set to check.
  • item: The item to check for presence.

Returns:
yes if the item is present, no otherwise.

Example:

>> {10, 20}:has(20)
= yes

add

Description:
Adds an item to the set.

Usage:

add(set:{T}, item: T) -> Void

Parameters:

  • set: The mutable reference to the set.
  • item: The item to add to the set.

Returns:
Nothing.

Example:

>> nums:add(42)

add_all

Description:
Adds multiple items to the set.

Usage:

add_all(set:&{T}, items: [T]) -> Void

Parameters:

  • set: The mutable reference to the set.
  • items: The array of items to add to the set.

Returns:
Nothing.

Example:

>> nums:add_all([1, 2, 3])

remove

Description:
Removes an item from the set.

Usage:

remove(set:&{T}, item: T) -> Void

Parameters:

  • set: The mutable reference to the set.
  • item: The item to remove from the set.

Returns:
Nothing.

Example:

>> nums:remove(42)

remove_all

Description:
Removes multiple items from the set.

Usage:

remove_all(set:&{T}, items: [T]) -> Void

Parameters:

  • set: The mutable reference to the set.
  • items: The array of items to remove from the set.

Returns:
Nothing.

Example:

>> nums:remove_all([1, 2, 3])

clear

Description:
Removes all items from the set.

Usage:

clear(set:&{T}) -> Void

Parameters:

  • set: The mutable reference to the set.

Returns:
Nothing.

Example:

>> nums:clear()

with

Description:
Creates a new set that is the union of the original set and another set.

Usage:

with(set:{T}, other: {T}) -> {T}

Parameters:

  • set: The original set.
  • other: The set to union with.

Returns:
A new set containing all items from both sets.

Example:

>> {1, 2}:with({2, 3})
= {1, 2, 3}

overlap

Description:
Creates a new set with items that are in both the original set and another set.

Usage:

overlap(set:{T}, other: {T}) -> {T}

Parameters:

  • set: The original set.
  • other: The set to intersect with.

Returns:
A new set containing only items present in both sets.

Example:

>> {1, 2}:overlap({2, 3})
= {2}

without

Description:
Creates a new set with items from the original set but without items from another set.

Usage:

without(set:{T}, other: {T}) -> {T}

Parameters:

  • set: The original set.
  • other: The set of items to remove from the original set.

Returns:
A new set containing items from the original set excluding those in the other set.

Example:

>> {1, 2}:without({2, 3})
= {1}

is_subset_of

Description:
Checks if the set is a subset of another set.

Usage:

set:is_subset_of(other: {T}, strict: Bool = no) -> Bool

Parameters:

  • set: The set to check.
  • other: The set to compare against.
  • strict: If yes, checks if the set is a strict subset (does not equal the other set).

Returns:
yes if the set is a subset of the other set (strictly or not), no otherwise.

Example:

>> {1, 2}:is_subset_of({1, 2, 3})
= yes

is_superset_of

Description:
Checks if the set is a superset of another set.

Usage:

is_superset_of(set:{T}, other: {T}, strict: Bool = no) -> Bool

Parameters:

  • set: The set to check.
  • other: The set to compare against.
  • strict: If yes, checks if the set is a strict superset (does not equal the other set).

Returns:
yes if the set is a superset of the other set (strictly or not), no otherwise.

Example:

>> {1, 2, 3}:is_superset_of({1, 2})
= yes