Module 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)
Functions
Set (t) | create a set. |
values (self) | get a list of the values in a set. |
map (self, fn, ...) | map a function over the values of a set. |
union (self, set) | union of two sets (also +). |
intersection (self, set) | intersection of two sets (also *). |
difference (self, set) | new set with elements in the set that are not in the other (also -). |
issubset (self, set) | is the first set a subset of the second (also <)?. |
isempty (self) | is the set empty?. |
isdisjoint (s1, s2) | are the sets disjoint? |
len (s) | size of this set (also # for 5.2). |
metamethods
__tostring () | string representation of a set. |
__add () | union of sets. |
__mul () | intersection of sets. |
__sub () | difference of sets. |
__pow () | symmetric difference of sets. |
__lt () | first set subset of second? |
__len () | cardinality of set (5.2). |
__eq (s1, s2) | equality between sets. |
Functions
- Set (t)
-
create a set.
Parameters:
- t may be a Set, Map or list-like table.
- values (self)
-
get a list of the values in a set.
Parameters:
- self a Set
Returns:
-
a list
- 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
- union (self, set)
-
union of two sets (also +).
Parameters:
- self a Set
- set another set
Returns:
-
a new 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]
- 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
- issubset (self, set)
-
is the first set a subset of the second (also <)?.
Parameters:
- self a Set
- set another set
Returns:
-
true or false
- isempty (self)
-
is the set empty?.
Parameters:
- self a Set
Returns:
-
true or false
- 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
- len (s)
-
size of this set (also # for 5.2).
Parameters:
- s a Set
Returns:
-
size