[r6rs-discuss] multiple value returns to non-tail positions in `begin' et al

Andy Wingo wingo at pobox.com
Sat Nov 1 15:07:13 EDT 2008


Greetings wranglers of the lambda calculus,

Quoth the R6:

    The continuations of all non-final expressions within a sequence of
    expressions, such as in lambda, begin, let, let*, letrec, letrec*,
    let-values, let*-values, case, and cond forms, usually take an
    arbitrary number of values.

Question 1: "Usually"?

Question 2: Why the change from R5, which sayeth:

    Except for continuations created by the `call-with-values'
    procedure, all continuations take exactly one value.

Question 3: Does anyone's Scheme, R5 or R6, error with the following:

    (define (nothing) (values))
    ((lambda () (nothing) 1))

This seems to be equal to 1 with R6, and undefined in R5. Of special
interest are those schemes that do not construct compound objects for
multiple value returns.

Thank you for any insight,

Andy
-- 
http://wingolog.org/



More information about the r6rs-discuss mailing list