On Tue, May 24, 2011 at 6:02 PM, John Cowan <[email protected]> wrote:

> Emmanuel Medernach scripsit:
>
> >   Except for continuations created by the call-with-values procedure,
> >   all continuations take exactly one value. The effect of passing no
> >   value or more than one value to continuations that were not created
> >   by call-with-values is unspecified.
> >
> > Therefore code relying on this cannot be portable, isn't it ?
>
> No, it's not portable.
>
>
Indeed, but in (foo X Y) I would not allow the evaluation of expression X to
interfere with Y : if X is (values X1 X2) and Y is (values), foo could
mislead X1 with X and X2 with Y as in some implementation. I mean doesn't
the report has to specify that evaluation of X has to be bound to X only ?


> As you say, some implementation reifies 'values'.  However the
> > R[567]RS definition of values currently forbids to reify it as I
> > understand it :
> >
> >   (values obj ...) procedure Delivers all of its arguments to its
> >   continuation.
>
> It doesn't say *how* they are delivered.  Reification is a perfectly
> legitimate strategy.


Thanks.

Historically, multiple values were intended to be
> a more lightweight alternative to constructing an object:
>
> Yes, like "letting values on the stack" implementations.
There is a last colon in your mail, is it truncated ?

Best regards,
--
Emmanuel Medernach
_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to