Re: Enum comparisons and value-lookup Marc Nieper-WiÃkirchen 19 Sep 2020 17:33 UTC
Am Sa., 19. Sept. 2020 um 18:35 Uhr schrieb Wolfgang Corcoran-Mathe <firstname.lastname@example.org>: > 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. Keeping the one-argument case for <? makes sense for "compatibility" to the SRFI 1 lset interface. Mathematically, the zero and one-argument cases make perfect sense, of course. > 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))) The filter procedure is the more basic one, so IMHO if any, it should be provided.