[R6RS] Enumerations proposal pre-draft

Michael Sperber sperber at informatik.uni-tuebingen.de
Mon Apr 24 13:09:55 EDT 2006

William D Clinger <will at ccs.neu.edu> writes:

>> Is this:
>> > (color-index (color purple))       => 2
>>                ^^^^^^^^^^^^^
>> supposed to be 'purple?
> Yes.  Sorry.

OK.  Would it be an acceptable tweak to add an operand to
`define-enum-type' like so:

(define-enum-type <type-name>
  (<symbol> ...))

where <elements-name> is what <type-name> was before, and where
<type-name> is defined to be a macro that will accept the name of an
enumeration value, and return the corresponding symbol, if the name
indeed belongs to the enumeration, and raise an expansion-time error


(define-enum-type color
  (black white purple maroon))

(colors)                           => (black white purple maroon)
(color? 'black)                    => #t
(color? 'gold)                     => #f
(color black)                      => 'black
(color purpel)                     => <expansion-time error>
(color-index (color purple))       => 2

Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

More information about the R6RS mailing list