Re: New draft (#4) and last call for comments on SRFI 209: Enumerations and Enum Sets Marc Nieper-Wißkirchen (16 Nov 2020 07:12 UTC)

Re: New draft (#4) and last call for comments on SRFI 209: Enumerations and Enum Sets Marc Nieper-Wißkirchen 16 Nov 2020 07:12 UTC

The original idea of the syntax `define-enumeration` is to have
constructors of enumeration sets without runtime overhead. The current
implementation produces constructor syntax that has quite some runtime
overhead and doesn't encourage the use of enumerations in production
code. Please provide fast versions (may need lower-level macros, e.g.
syntax-case, to test for symbol equality).

The constructor syntax should also raise an error if they receive a
symbol that does not lie in the enumeration set. Preferably, the error
shows up at expansion time, which is possible with lower-level macros.

Am Mo., 16. Nov. 2020 um 07:03 Uhr schrieb Arthur A. Gleckler
> I've just published draft #4 of SRFI 209. It was submitted by Wolfgang Corcoran-Mathe, co-author of the SRFI.
> John and Wolfgang have asked me to announce last call for this SRFI. They believe that it is ready for finalization, but would like to give reviewers one last chance to submit corrections and feedback before we finalize it.
> In particular, I appeal to anyone reading this to try the sample implementation, run the tests, and send feedback about your results.
> If you're interested in this SRFI, please give your feedback via the SRFI 209 mailing list before 2020-11-23. After that, assuming that no major revisions are required, we will declare it final. It is important that we get your feedback before 2020-11-23. If that deadline is too soon for you, but you would like to contribute, please let me know so that I can extend the last-call period.
> Here are Wolfgang's comments on the draft:
> These commits include John's recent additions of the R6RS enums forms, as well as the implementations of same.
> Here is the commit summary:
> Use eq? in the enum comparator type test and equality predicate.
> Refactor enum=?.
> Use exact-integer? in utility predicate.
> Tests: Fix typos and import (scheme write).
> Use mappings instead of hashmaps, per performance tests.
> Add test suite for chibi-scheme.
> Tidy and improve error handling.
> enum-empty-set constructor, functional mutators
> Add enum-empty-set.
> Add non-destructive mutator procedures.
> Added syntax, enum-set-complement, functional logical ops
> Enum-set constructors take an enum-type argument.
> Update enum-set-projection.
> Add new enum-set constructors.
> Add non-linear-update set-theoretical operations.
> Use same helper proc. for all set-theoretical operations.
> make-enum-type: Argument type-check.
> Export enum-set-type.
> Emend enum-set-constructor.
> Add enum-set-member?.
> enum-set-contains?: Remove unneeded equality check.
> Add enum-set-subset? as an alias of enum-set<=?.
> Add enum-set-complement(!).
> Update tests.
> Add enum-set-indexer.
> Add define-enum.
> Add define-enumeration.
> define-enum: Fix typo.
> Tests for new procedures and syntax.
> Remove duplicate import.
> Comment cleanup.
> Reformat export list.
> Remove trailing whitespace.
> Fix HTML errors, remove copypasta R6RS HTML.
> Publish fourth draft.
> Here's the diff:
> Regards,
> SRFI Editor