3.8 Enumerations and Masks
Although the constructors below are describes as procedures, they are
implemented as syntax, so that error messages can report a type name
where the syntactic context implies one.
Takes a list of symbols and generates an enumeration type. The
enumeration maps between a symbol in the given symbols list and
corresponding integers, counting from 0.
The list symbols can also set the values of symbols by
putting '= and an exact integer after the symbol. For
example, the list '(x y = 10 z) maps 'x to
0, 'y to 10, and 'z to
The basetype argument specifies the base type to use.
Similar to _enum
, but the resulting mapping translates a list
of symbols to a number and back, using bitwise-ior
. A single
symbol is equivalent to a list containing just the symbol. The
, since high bits are often
used for flags.