[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] Technical question
I am *not* in WG1, but Aaron has asked for comments that contrast
with his opinion, so I shall risk speaking up ...
One could argue that the continuation k which is to receive the
three values 1, 2, and 3, is within the body of the unnamed lambda
(call-with-current-continuation (lambda (k) (k 1 2 3)))
;; <-- continuation k is right here, so to speak
That is, the task of continuation k is to wrap up whatever the
unnamed lambda expression is going to return, and return it.
Continuation k is not explicitly created by "call-with-values"
-- that procedure is not used in the unnamed lambda expression;
rather, continuation k is created by the unnamed lambda expression.
Thus continuation k must take exactly one value, so it is an error
for k to be called with the three values 1, 2, and 3, and an
implementation might well choose to report that error.
The unnamed lambda expression itself is certainly providing values
to a continuation created by "call-with-values", so the unnamed lambda
expression is allowed to return multiple values, but as far as
I can tell, the only means it has to do so in R5 Scheme is by using
"values", e.g. (to pick an example using call/cc somehow) perhaps:
(call-with-current-continuation (lambda (k) (k 'just-one-value)))
<Insert here canonical apologies for wading into a cat fight without
proper formal introductions to any of the cats ... :-) :-) :-) >
-- Jay Reynolds Freeman
http://web.mac.com/jay_reynolds_freeman (personal web site)
Scheme-reports mailing list