[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] multiple values module

25 minutes ago, Andy Wingo wrote:
> > Chibi's problem
> Is probably just a bug.  I'll assume that's the case; it was a good
> catch on your part.

If it is, that's good.  I understood John as saying that it's fine as
an r5rs implementation.  (Specifically, he never referred to it as a

> > Peter talked about chicken's behavior of dropping extra values but
> > there's no reification; guile breaks (I*M*O) things further and
> > reifies values but still respects the above
> Just to clarify: Guile does the Ashley/Dybvig thing (an additional
> MV return address, and returns to that address expect N values on
> the stack + number-of-values marker).  For continuations created by
> call-with-values, the correct number of values is required (or an
> error is signalled).  For implicitly single-valued continuations,
> Guile truncates >1 values to 1 value, and (unlike Chicken) errors if
> 0 values are returned.

I should have clarified that this is the version I have installed
(1.8.7), and thanks to your work I'm not surprised that things are

> I think the R5RS wording is careful and correct.

This boils down to interpreting the english wording of the document,
which I'm probably bad at.  What I understood from John is that
chibi's current behavior (the one I demonstrated and the result that I
got from it) is fine by R5RS.  If you take it (chibi's behavior) as a
bug that is *not* fine by R5RS, then we have two native speakers with
different interpretations, which I take as buggy wording.  If, OTOH,
John agrees that the implementation is broken, then the implementation
should not be used as an argument -- *unless* the goal is to lower the
level of specification to the point where it is not considered a bug.
(And given that you do consider it a bug, I assume that you're not in
favor of lowering the specification like that.)

But the "if you want R6RS you know where to find it", is -- still --
an inappropriate response in my opinion, since AFAICT none of this
changed in R6RS.  (I've even compared the texts side by side now, and
the only difference I see is the omission of `call-with-values' as the
only way to get a non-unary continuation, due to the addition of
multiple values constructs, and to allowing any number of values in
begin bodies; both are irrelevant for the post I made before that

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Scheme-reports mailing list