The elements of an integer set are non-negative exact integers. The procedures for creating and manipulating integer sets are the same as those for SRFI 113 sets, except that set is replaced by integer-set in their names. However, set-comparator has no equivalent for integer sets, and in integer-set, integer-set-unfold, integer-set-map, and integer-set-copy the comparator argument is omitted.
Although sets subsume integer sets, providing them separately allows for increased implementation efficiency. There are two Chicken eggs that provide integer sets: iset, which is conceptually similar to the integer sets described here; and cis, which uses lists of integer intervals.
(integer-set-limit integer-set)
Returns the limit of integer-set. This procedure corresponds to set-comparator.
(universal-integer-set limit)
Returns a newly allocated integer set. The possible elements of the set are the exact integers from 0 to limit - 1, where limit is an exact non-negative integer. The set contains all possible elements.
(range->integer-set limit low high)
Returns a newly allocated integer set. The possible elements of the set are the exact integers from 0 to limit - 1, where limit is an exact non-negative integer. The set contains the elements from low (inclusive) to high (exclusive).
(integer-set-adjoin-range integer-set low high)
Returns a newly allocated integer set with the same limit as integer-set and that contains all its values, and in addition each integer from low (inclusive) to high (exclusive) unless it is already equal to an existing member.
(integer-set-adjoin-range! integer-set low high)
A linear update procedure that returns an integer set with the same limit as integer-set and that contains all its values, and in addition each integer from low (inclusive) to high (exclusive) unless it is already equal to an existing member.
(integer-set-complement integer-set)
Returns a newly allocated integer set that is the complement of integer-set.
(integer-set-complement! integer-set)
A linear update procedure that returns a set that is the complement of integer-set.
(integer-set-min integer-set)
(integer-set-max integer-set)
Returns the smallest or largest integer in integer-set, or #f if there is none.
(integer-set-open-interval integer-set low high)
(integer-set-closed-interval integer-set low high)
(integer-set-open-closed-interval integer-set low high)
(integer-set-closed-open-interval integer-set low high)
Procedures that return a subset of integer-set contained in the interval from low to high. The interval may be open, closed, open below and closed above, or open above and closed below.
(integer-set-range= integer-set k)
(integer-set-range< integer-set k)
(integer-set-range<= integer-set k)
(integer-set-range> integer-set k)
(integer-set-range>= integer-set k)
Procedures that return an integer set containing the elements of integer-set that are equal
to, less than, less than or equal to, greater than, or greater than or equal to k.
Note that the result integer-set-range= contains at most one element.
(integer-set-delete-min! integer-set)
(integer-set-delete-max! integer-set)
Linear update procedures that return two values: the smallest or largest integer in integer-set or #f if there is none, and a set which contains all the elements of set except the integer being returned.