I've just published draft #8 of SRFI 189. It was submitted by John Cowan, co-author of the SRFI.
Here are John's comments on the draft:
If we are already in LC, we should do a second LC.
John and Wolfgang have made substantial additions to the text and the sample implementation, so they're requesting a second "last call" period. If you'd like to comment, please submit your feedback before 2020-07-08.
Here is the commit summary:
- Implement multiple-argument versions of maybe=? and either=?.
- Update maybe / either-ref to Draft 7.
- Rename "generator" and "truth" conversions.
- values->either: Allow multiple default objects.
- Rename "two-values" conversions.
- Update maybe / either-compose to Draft 7.
- Add single-seed fast path to -unfold procedures.
- Tune single-value paths of maybe / either-ref.
- Further tuning of -ref procedures.
- Simplify maybe= and either=.
- Add tests for maybe= / either= with more than two arguments.
- Tune single-value path of -filter and -remove procedures.
- call successor during -unfold
- Revert "call successor during -unfold"
- Minor comment cleanup and page reformat.
- Simplify single-value fast paths with macros.
- Tests: rename macro.
- Remove artifact named let.
- Fix bug in maybe- / either-unfold and add test.
- unfold now an anamorphism, multitruth renamed to list-truth, Either protocol converters
- Add either->truth.
- Fix procedure name in error message.
- Rename "generation" protocol conversions.
- Add list->maybe and list->either.
- Add "list-truth" protocol conversions.
- Update maybe / either-unfold to Draft 8 versions.
- Fix missing paren.
- Update tests for Draft 8.
- Use assume to signal errors where the SRFI says "it is an error".
- Remove non-portable tests for error conditions.
- Add truth->either. Update tests.
- slight cleanups
- moved conversion to constructors
- Move conversions to constructor section.
- Copy list arguments to raw-just, etc., where necessary.
- Additional tuning of single-value payload paths.
- Minor typo and grammatical fixes.
- Fix typo.
- minor correction
- New syntactic forms: Initial import.
- and, or, let*
- Ensure base values of -and-let* forms are unwrapped.
- Add type checks to and/or macros.
- Fix typo.
- Fix -and-let* bugs which caused correct expression to raise errors.
- clarify maybe-let*
- Revert "Fix -and-let* bugs which caused correct expression to raise errors."
- let* forms: Enforce Maybe/Either-valued claws in body-less cases.
- Rename macros: and-let* -> let*.
- Fix names in macro body.
- Add tests for and, or, and let* forms.
- Replace unused pattern variable with underscore.
- Add generation->either and either->generation.
- Tests for Either generation conversions.
- Tuning: eliminate maybe-ref in several procedures.
- Tuning: eliminate some uses of -bind and -ref procedures.
- Eliminate -bind and -ref from map and fold procedures.
- Minor style changes. Comment improvement.
- Minor tuning of either-swap.
- Use helper type-check macro in conditional forms.
- Refactor maybe/either-let* to efficiently catch ill-typed bodies.
- Switch to new standard SRFI header format.
- Update abstract.
- Remove trailing whitespace.
- Publish eighth draft.
Here's the diff: