Enum comparisons and value-lookup
Wolfgang Corcoran-Mathe 19 Sep 2020 16:35 UTC
I think that the enum=?, enum<?, etc. forms should all require at
least two enum arguments, unless there's some strong reason for
keeping the zero- and one-argument cases.
I'm thinking out loud here, but would it make sense to provide an
enum-set constructor, say enum-value->enums, which takes an enum-type
t and a value v and returns an enum-set of all the enums in t with
enum-value v? The SRFI states "there is no way to find an enum by its
value, since values need not be unique", and there is no
enum-value->enum. But this only means that such a "finder" isn't
necessarily injective. It's plausible and maybe even useful to map a
value to an enum-set of results.
Alternatively, or additionally, we may want to add enum-set-filter
and friends. Something equivalent to the above function could then
be written:
(define (enum-value->enums type val)
(enum-set-filter (lambda (e) (equal? val (enum-value e)))
(enum-type->enum-set type)))
--
Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz>
"Abstraction lies at the heart of all programming languages."
--Greg Michaelson