I've just published draft #2 of SRFI 217. It was submitted by Wolfgang Corcoran-Mathe, co-author of the SRFI.
Wolfgang has asked me to announce last call for this SRFI. He believes 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 217 mailing list before 2020-02-10. After that, assuming that no major revisions are required, we will declare it final. It is important that we get your feedback before 2020-02-10. 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:
This includes a few SRFI document changes; these are mostly small, but we've also added the following procedures:
make-range-iset
iset-iota
iset-delete-min~(
!~)
iset-delete-max~(
!~)
I think we can call this a final draft candidate and announce last call.
Here is the commit summary:
- Update date. Examples have been added.
- Fix iset-search bug.
- iset-search: Optimize same-element update case.
- Tests: iset-search update with an arbitrary new element.
- Begin adding bitmap support to core forms.
- Begin adding bitmap support to filter/remove.
- Bitmap support for iset-min/max.
- Complete bitmap support for core forms; add trie-fold.
- Add missing import.
- Update iset-fold.
- Update iset-min/-max.
- Bitmap support for trie equality comparison.
- filter & remove: Don't create empty bitmaps; fix a mistake.
- Bitmap support for partition.
- Use smart-leaf constructor in more places.
- Bitmap support for delete.
- Bitmap support for iset-disjoint?.
- Remove call/cc short-circuit in iset-intersection.
- Type checks for iset-intersection and -difference.
- Delete out-of-date comments.
- Bitmap support for trie subset comparison.
- Bitmap support for iset-intersection.
- Style: Return empty tries (represented by #f) explicitly.
- Remove redundant constructor.
- Bitmap support for iset-difference.
- Bitmap support for range operations.
- Overhaul trie merging to provide bitmap support.
- Bitmap support for iset intervals.
- Bitmap support for iset-search.
- Fix iset-fold argument order.
- Bitmap support for iset-size.
- Fix typo in trie-remove.
- Fix typos in merge helper procedure.
- Fix out-of-date iset-union definition.
- Remove error due to duplicated code.
- Use smart leaf constructor in merge helper function.
- Reimplement iset-search with one-pass semantics, full bitmap support.
- iset-copy: Copy leaves of tries as well as branches.
- Expand tabs.
- Remove iset-search test, fix incorrect iset-xor test.
- Implement trie insertion in terms of search.
- Implement deletion in terms of search.
- Additional header comments for trie implementation.
- Implement iset-delete-all in terms of iset-difference.
- Fix errors reported by the W3C validator.
- Add CHICKEN module for SRFI 217 implementation.
- Provide shimmed version of `exact' on CHICKEN.
- Rename trie branch constructors.
- Rename lowest-set-bit -> lowest-bit-mask.
- Simplify and slightly improve highest-set-bit.
- iset-search: Tail-call failure/success continuations.
- iset-delete: Variadic procedure.
- iset-delete: Use iset-search.
- iset-adjoin: Add fast zero- and one-element paths.
- Remove unused internal procedure.
- Revert "Implement trie insertion in terms of search."
- Revert "iset-delete: Use iset-search."
- Re-implement trie deletion directly.
- Fix bitmap-delete.
- Revert "Remove iset-delete-min/-max(!)."
- Update iset-delete-min/-max
- iset-adjoin(!)/-delete(!) take at least one element argument.
- iset=?, etc. take at least two iset arguments.
- Union, intersection, & difference take at least two isets.
- Rename "iset-range*" to "isubset*".
- Update renamed procedure implementations.
- Add iset-search.
- Fix errors and obvious typos in delete-min/-max.
- Copy delete-min/-max tests into portable test set.
- Specify make-range-iset and iset-iota.
- Fix erroneous example.
- Rename make-range-iset arguments.
- Re-implement make-range-iset and add a test.
- Implement iset-iota and add tests.
- Remove no-op special cases for several procedures.
- Update procedure name used in rationale.
- Examples for iset-iota and make-range-iset.
- iset-map: proc must return an exact integer.
- Fix incorrect example.
- list->iset! may mutate its iset argument.
- Grammar fix.
- Drop trailing whitespace.
- Publish second draft.
Here's the diff:
https://github.com/scheme-requests-for-implementation/srfi-217/compare/draft-1..draft-2
Regards,
SRFI Editor