On Nov 1, 2008, at 3:07 PM, Andy Wingo wrote: > 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"?
Looks like an editorial oversight. Cross "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. Because such continuations (e.g., in a begin) ignore their values. Is there a reason to restrict them to a single value which they ignore anyways, and force them to signal an error when given anything other than a single 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. Ikarus does not construct compound objects for multiple values; It also does not signal an error on that correct program. Chez is similar on both counts. I don't know about the internals of others. Aziz,,, _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
