Class pl.Set

A Set class.

> Set = require 'pl.Set'
> = Set{'one','two'} == Set{'two','one'}
true
> fruit = Set{'apple','banana','orange'}
> = fruit['banana']
true
> = fruit['hazelnut']
nil
> colours = Set{'red','orange','green','blue'}
> = fruit,colours
[apple,orange,banana]   [blue,green,orange,red]
> = fruit+colours
[blue,green,apple,red,orange,banana]
[orange]
> more_fruits = fruit + 'apricot'
> = fruit*colours
 =  more_fruits, fruit
banana,apricot,apple,orange]    [banana,apple,orange]

Dependencies: pl.utils, pl.tablex, pl.class, pl.Map, (pl.List if __tostring is used)

Methods

pl.set:Set (t) create a set.
pl.set:values (self) get a list of the values in a set.
pl.set:map (self, fn, ...) map a function over the values of a set.
pl.set:union (self, set) union of two sets (also +).
pl.set:intersection (self, set) intersection of two sets (also *).
pl.set:difference (self, set) new set with elements in the set that are not in the other (also -).
pl.set:issubset (self, set) is the first set a subset of the second (also <)?.
pl.set:isempty (self) is the set empty?.
pl.set:isdisjoint (s1, s2) are the sets disjoint?
pl.set:len (s) size of this set (also # for 5.2).

Metamethods

pl.set:__tostring () string representation of a set.
pl.set:__add () union of sets.
pl.set:__mul () intersection of sets.
pl.set:__sub () difference of sets.
pl.set:__pow () symmetric difference of sets.
pl.set:__lt () first set subset of second?
pl.set:__len () cardinality of set (5.2).
pl.set:__eq (s1, s2) equality between sets.


Methods

pl.set:Set (t)
create a set.

Parameters:

  • t may be a Set, Map or list-like table.
pl.set:values (self)
get a list of the values in a set.

Parameters:

  • self a Set

Returns:

    a list
pl.set:map (self, fn, ...)
map a function over the values of a set.

Parameters:

  • self a Set
  • fn a function
  • ... extra arguments to pass to the function.

Returns:

    a new set
pl.set:union (self, set)
union of two sets (also +).

Parameters:

  • self a Set
  • set another set

Returns:

    a new set
pl.set:intersection (self, set)
intersection of two sets (also *).

Parameters:

  • self a Set
  • set another set

Returns:

    a new set

Usage:

    > s = Set{10,20,30}
    > t = Set{20,30,40}
    > = t
    [20,30,40]
    > = Set.intersection(s,t)
    [30,20]
    > = s*t
    [30,20]
pl.set:difference (self, set)
new set with elements in the set that are not in the other (also -).

Parameters:

  • self a Set
  • set another set

Returns:

    a new set
pl.set:issubset (self, set)
is the first set a subset of the second (also <)?.

Parameters:

  • self a Set
  • set another set

Returns:

    true or false
pl.set:isempty (self)
is the set empty?.

Parameters:

  • self a Set

Returns:

    true or false
pl.set:isdisjoint (s1, s2)
are the sets disjoint? (no elements in common). Uses naive definition, i.e. that intersection is empty

Parameters:

  • s1 a Set
  • s2 another set

Returns:

    true or false
pl.set:len (s)
size of this set (also # for 5.2).

Parameters:

  • s a Set

Returns:

    size

Metamethods

pl.set:__tostring ()
string representation of a set.
pl.set:__add ()
union of sets.
pl.set:__mul ()
intersection of sets.
pl.set:__sub ()
difference of sets.
pl.set:__pow ()
symmetric difference of sets.
pl.set:__lt ()
first set subset of second?
pl.set:__len ()
cardinality of set (5.2).
pl.set:__eq (s1, s2)
equality between sets.

Parameters:

  • s1
  • s2
generated by LDoc 1.5.0