# Class `std.set`

Set container prototype.

Note that Functions listed below are only available from the Set prototype returned by requiring this module, because Container objects cannot have object methods.

## Prototype Chain

    table
     `-> Object
          `-> Container
               `-> Set

## Objects

std.set.Set | Set prototype object.

## Functions

std.set.delete (set, e) | Delete an element from a set.
std.set.difference (set1, set2) | Find the difference of two sets.
std.set.difference (set, e) | Say whether an element is in a set.
std.set.elems (set) | Iterator for sets.
std.set.equal (set1, set2) | Find whether two sets are equal.
std.set.insert (set, e) | Insert an element into a set.
std.set.intersection (set1, set2) | Find the intersection of two sets.
std.set.proper_subset (set1, set2) | Find whether one set is a proper subset of another.
std.set.subset (set1, set2) | Find whether one set is a subset of another.
std.set.symmetric_difference (set1, set2) | Find the symmetric difference of two sets.
std.set.union (set1, set2) | Find the union of two sets.

## Metamethods

std.set.__add (set1, set2) | Union operator.
std.set.__div (set1, set2) | Symmetric difference operator.
std.set.__le (set1, set2) | Subset operator.
std.set.__lt (set1, set2) | Proper subset operator.
std.set.__mul (set1, set2) | Intersection operator.
std.set.__sub (set1, set2) | Difference operator.

## Objects

std.set.Set
  Set prototype object.

  Set also inherits all the fields and methods from std.container.Container.

  ### Fields:

  - _type string object name (default "Set")

  ### See also:

  - std.container
  - std.object.__call

  ### Usage:

       local std = require "std"
       std.prototype (std.set) --> "Set"
       os.exit (0)

## Functions

Methods

std.set.delete (set, e)
  Delete an element from a set.

  ### Parameters:

  - set Set a set
  - e element

  ### Returns:

  Set the modified set

  ### Usage:

      set.delete (available, found)

std.set.difference (set1, set2)
  Find the difference of two sets.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set a copy of set1 with elements of set2 removed

  ### Usage:

      all = set.difference (all, {32, 49, 56})

std.set.difference (set, e)
  Say whether an element is in a set.

  ### Parameters:

  - set Set a set
  - e element

  ### Returns:

  `true` if e is in set, otherwise `false` otherwise

  ### Usage:

      if not set.member (keyset, pressed) then return nil end

std.set.elems (set)
  Iterator for sets.

  ### Parameters:

  - set Set a set

  ### Returns:

  *set* iterator

  ### Usage:

      for code in set.elems (isprintable) do print (code) end

std.set.equal (set1, set2)
  Find whether two sets are equal.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  boolean `true` if set1 and set2 each contain identical elements, `false` otherwise

  ### Usage:

      if set.equal (keys, {META, CTRL, "x"}) then process (keys) end

std.set.insert (set, e)
  Insert an element into a set.

  ### Parameters:

  - set Set a set
  - e element

  ### Returns:

  Set the modified set

  ### Usage:

       for byte = 32,126 do
         set.insert (isprintable, string.char (byte))
       end

std.set.intersection (set1, set2)
  Find the intersection of two sets.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set a new set with elements in both set1 and set2

  ### Usage:

      common = set.intersection (a, b)

std.set.proper_subset (set1, set2)
  Find whether one set is a proper subset of another.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  boolean `true` if set2 contains all elements in set1 but not only those elements, `false` otherwise

  ### Usage:

       if set.proper_subset (a, b) then
         for e in set.elems (set.difference (b, a)) do
           set.delete (b, e)
         end
       end
       assert (set.equal (a, b))

std.set.subset (set1, set2)
  Find whether one set is a subset of another.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  boolean `true` if all elements in set1 are also in set2, `false` otherwise

  ### Usage:

      if set.subset (a, b) then a = b end

std.set.symmetric_difference (set1, set2)
  Find the symmetric difference of two sets.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set a new set with elements that are in set1 or set2 but not both

  ### Usage:

      unique = set.symmetric_difference (a, b)

std.set.union (set1, set2)
  Find the union of two sets.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set a copy of set1 with elements in set2 merged in

  ### Usage:

      all = set.union (a, b)

## Metamethods

std.set.__add (set1, set2)
  Union operator.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set everything from set1 plus everything from set2

  ### See also:

  union

  ### Usage:

      union = set1 + set2

std.set.__div (set1, set2)
  Symmetric difference operator.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set everything from set1 or set2 but not both

  ### See also:

  symmetric_difference

  ### Usage:

      symmetric_difference = set1 / set2

std.set.__le (set1, set2)
  Subset operator.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  boolean `true` if everything in set1 is also in set2

  ### See also:

  subset

  ### Usage:

      issubset = set1 <= set2

std.set.__lt (set1, set2)
  Proper subset operator.

  ### Parameters:

  - set1 Set set
  - set2 Set another set

  ### Returns:

  boolean `true` if set2 is not equal to set1, but does contain everything from set1

  ### See also:

  proper_subset

  ### Usage:

      ispropersubset = set1 < set2

std.set.__mul (set1, set2)
  Intersection operator.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set anything this is in both set1 and set2

  ### See also:

  intersection

  ### Usage:

      intersection = set1 * set2

std.set.__sub (set1, set2)
  Difference operator.

  ### Parameters:

  - set1 Set a set
  - set2 Set another set

  ### Returns:

  Set everything from set1 that is not also in set2

  ### See also:

  difference

  ### Usage:

      difference = set1 - set2

generated by LDoc 1.4.3 Last updated 2018-09-03 17:48:42