Next: , Previous: , Up: R6RS Standard Libraries   [Contents][Index]


7.6.2.26 rnrs enums

The (rnrs enums (6)) library provides structures and procedures for working with enumerable sets of symbols. Guile’s implementation defines an enum-set record type that encapsulates a finite set of distinct symbols, the universe, and a subset of these symbols, which define the enumeration set.

The SRFI-1 list library provides a number of procedures for performing set operations on lists; Guile’s (rnrs enums) implementation makes use of several of them. See SRFI-1 Set Operations, for more information.

Scheme Procedure: make-enumeration symbol-list

Returns a new enum-set whose universe and enumeration set are both equal to symbol-list, a list of symbols.

Scheme Procedure: enum-set-universe enum-set

Returns an enum-set representing the universe of enum-set, an enum-set.

Scheme Procedure: enum-set-indexer enum-set

Returns a procedure that takes a single argument and returns the zero-indexed position of that argument in the universe of enum-set, or #f if its argument is not a member of that universe.

Scheme Procedure: enum-set-constructor enum-set

Returns a procedure that takes a single argument, a list of symbols from the universe of enum-set, an enum-set, and returns a new enum-set with the same universe that represents a subset containing the specified symbols.

Scheme Procedure: enum-set->list enum-set

Returns a list containing the symbols of the set represented by enum-set, an enum-set, in the order that they appear in the universe of enum-set.

Scheme Procedure: enum-set-member? symbol enum-set
Scheme Procedure: enum-set-subset? enum-set1 enum-set2
Scheme Procedure: enum-set=? enum-set1 enum-set2

These procedures test for membership of symbols and enum-sets in other enum-sets. enum-set-member? returns #t if and only if symbol is a member of the subset specified by enum-set. enum-set-subset? returns #t if and only if the universe of enum-set1 is a subset of the universe of enum-set2 and every symbol in enum-set1 is present in enum-set2. enum-set=? returns #t if and only if enum-set1 is a subset, as per enum-set-subset? of enum-set2 and vice versa.

Scheme Procedure: enum-set-union enum-set1 enum-set2
Scheme Procedure: enum-set-intersection enum-set1 enum-set2
Scheme Procedure: enum-set-difference enum-set1 enum-set2

These procedures return, respectively, the union, intersection, and difference of their enum-set arguments.

Scheme Procedure: enum-set-complement enum-set

Returns enum-set’s complement (an enum-set), with regard to its universe.

Scheme Procedure: enum-set-projection enum-set1 enum-set2

Returns the projection of the enum-set enum-set1 onto the universe of the enum-set enum-set2.

Scheme Syntax: define-enumeration type-name (symbol ...) constructor-syntax

Evaluates to two new definitions: A constructor bound to constructor-syntax that behaves similarly to constructors created by enum-set-constructor, above, and creates new enum-sets in the universe specified by (symbol ...); and a “predicate macro” bound to type-name, which has the following form:

(type-name sym)

If sym is a member of the universe specified by the symbols above, this form evaluates to sym. Otherwise, a &syntax condition is raised.


Next: , Previous: , Up: R6RS Standard Libraries   [Contents][Index]