[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>
<elements-name>
<predicate-name>
<index-accessor>
(<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
otherwise?
Example:
(define-enum-type color
colors
color?
color-index
(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