4.3 KiB
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}
Here’s 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
: Ifyes
, 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
: Ifyes
, 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