First, congratulations on the first R6RS srfi! I have not had the chance to
read it carefully yet, but a first skimming turned up the following
issues:
- R6RS requires the syntax (library (name) ---), so (library name ---)
is a syntax error.
- It would be more consistent with the r6rs naming conventions (and
probably also implementation-dependent schemes for grouping related
libraries and mapping library to file names) to call the libraries
(streams primitives) and (streams derived), i.e., use the plural
of the data type and break it up into more than one identifier.
- The identifier _ may not be used as a literal in syntax-rules in r6rs.
Therefore, unfortunately you will need to use syntax-case in order to write
stream-match if you wish to reuse _ as the wildcard.
- The (streams derived) library should re-export the identifier
_, since one would like to be able to use stream-match without
always needing to co-import (rnrs). This is the policy followed by
(rnrs syntax-case), which re-exports ... and _. Note that, as
it is now, even co-importing just (rnrs base) is not sufficient for using
stream-match, since (rnrs base) exports _ only for expand, not for run.
- R6RS error takes at least two arguments.
- R6RS already has something like ormap (called exists).
- For space-safe promises, some alternative more efficient implementation
strategies with less boxing can be found in the SRFI-45 post-finalization
discussion. See in particular the message "Simpler implementation" and
follow-ups.
- Small spelling error: it should be "van" Tonder.
Best regards
Andre