On Thu, May 26, 2011 at 6:07 PM, Andre van Tonder
<andre@x> wrote:
On Thu, 26 May 2011, Eli Barzilay wrote:
> This is a question for WG1 (collectively):
>
> According to R5RS, is this code:
>
> (call-with-values
> (lambda ()
> (call-with-current-continuation (lambda (k) (k 1 2 3))))
> (lambda (x y z) 'ok))
>
> allowed to throw an error, or to return anything other than 'ok ?
It is /not/ allowed to throw an error in R5RS. According to R5RS:
Values might be defined as follows:
(define (values . things)
(call-with-current-continuation
(lambda (cont) (apply cont things))))
so according to R5RS your example is equivalent to
(call-with-values
(lambda ()
(values 1 2 3))
(lambda (x y z) 'ok))
which must return OK.