[R6RS] summary of decisions regarding multiple values

Michael Sperber sperber at informatik.uni-tuebingen.de
Sat Jun 24 05:50:28 EDT 2006

William D Clinger <will at ccs.neu.edu> writes:

> The tenuous symmetry between calls and returns was broken
> when we decided to require continuations created by begin
> to accept any number of arguments.  For consistency with
> that decision, and for consistency with many of Scheme's
> traditional equivalences, such as the equivalence between
>     (begin E1 E2)
> and
>     ((lambda (ignored) E2) E1)

This bit I don't buy at all.  (That doesn't imply any opinion on your
overall point; but as it keeps coming up, I'm commenting.)  Your
choice of that particular transformation seems to be an implementation
aspect rather than an aspect of the semantics.  (As is the choice of
A-normal form.  Moreover, one could easily imagine a formulation of
A-normal form that caters to whatever multiple-value convention is on
the menu.)  In fact, the definition of BEGIN in R5RS doesn't refer to
the number of return values from the non-last expressions at all; this
restriction appears in a different place in the document.  (And the
current draft, of course, has a different suggestion for a macro
defining BEGIN.  No symmetry is lost.)

> our earlier decision implies that continuations created
> for argument evaluation must also accept any number of
> arguments.


Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

More information about the R6RS mailing list