Marc,
Thanks for this clear, useful, and exceptionally detailed SRFI. I
have only a few comments at the moment.
(1) Is there a better name for with-values? By unofficial convention,
Scheme procedures whose names begin with `with-' establish some
dynamic state for a procedure call. with-values does not. The range
of available names here is unfortunately rather limited. I thought
`consume' was somewhat descriptive of what with-values does, but there
may be better names.
(2) For the specification of case-receive, I think we should have
"(case-receive <producer> <clause> ...)" instead of "(case-receive
<producer> (clause ...))", unless I've misunderstood something.
The example implementation of case-receive is also missing some
close-parens.
(3) list-values: For "Is is an error ...", read "It is an error ...".
(4) Several specifications require that an argument be a box, and
box-values refers to unbox. I suggest including a pointer to SRFI
111/(scheme box) to clarify these references.
(5) The description of compose is odd: "When the resulting procedure
is applied to arguments, these arguments are applied to transducer1,
whose results are applied to transducer2, and so on..." The phrase
"applied to" here seems to have its arguments flipped; usually
procedures are "applied to" arguments. Similar unusual wording occurs
in the specs of bind/list, bind/box, and bind.
(6) bind/list, bind/box, bind: For "... and the transducers are no
procedures", read "... and the transducers are not procedures".
I've run some preliminary experiments with the sample implementations
and haven't yet found any errors, aside from the typos in case-receive
noted above. I've collated a single source file from the SRFI's code;
would you have any interest in adding it to the SRFI repository?
Thanks and regards,
--
Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz>
"There is no first attack in karate." --Inscription on a monument
to Gichin Funakoshi in Kamakura