On Sun, Dec 1, 2013 at 12:00 PM, John Cowan <[email protected]> wrote:

> Alex Shinn scripsit:
>
> > I'm not sure we need bother clarifying this.  Interleaving
> > assignment is both the most natural and only realistic
> > interpretation of the existing text.  You have to stretch
> > it quite a lot to think that it allows the <init>s to be
> > evaluated outside the order of the assignments.
>
> Well, someone on #scheme was complaining about it being unclear,
> and when I looked at it, I realized that I had never really
> understood letrec* before.  He was under the impression that
> letrec* is to letrec as let* is to let; that is, that letrec*
> expands to nested letrecs.


If that is the misconception, then your clarification
doesn't help - in nested letrecs the order of <init>
evaluation and variable assignment would be the
same as it is now.

Perhaps instead we could just add some more
examples?  This should help understanding better
than lengthening the prose.

Anyway, Riastradh set both of us
> straight, and clarified that although some Schemes implement
> letrec as letrec*, this is definitely a bug.


Using letrec as though it were letrec* is indeed
a bug.  Specifically, it "is an error", which means
implementations are free to handle this situation
however they want, including raising an exception
or simply treating it as letrec*.

-- 
Alex
_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to