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

Re: [Scheme-reports] [scheme-reports-wg1] Erratum for letrec* definition

On Sun, Dec 1, 2013 at 12:00 PM, John Cowan <cowan@x> 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*.


Scheme-reports mailing list