[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: multiple values proposal
> Date: Thu, 18 Mar 1993 09:53:55 -0800
> From: Morry Katz <katz@quilty.stanford.edu>
>
> I hate to throw a monkey wrench into the whole process, but the above
> does not match my recollection of what was approved at the R5RS
> meeting. In the expression
> (call-with-values
> (call-with-current-continuation
> (lambda (k)
> (k (values 1 2 3))))
> (lambda (a b c)
> . . .))
>
> k better be a continuation that accepts 3 values or things are going
> to be very broken.
There are two bugs in this code. The first is that the first argument to
CALL-WITH-VALUES is supposed to yield a thunk. The second is that the call to
VALUES is in argument position and so certainly returns the wrong number of
values for its continuation. Here is what I suspect Morry meant to write:
(call-with-values (lambda ()
(call-with-current-continuation
(lambda (k)
(k 1 2 3))))
(lambda (a b c)
. . .))
And now, this looks to me like code that's entirely legal under the description
that was posted.
Pavel