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.