[plt-scheme] to define, or to let

From: Eli Barzilay (eli at barzilay.org)
Date: Sat Mar 20 23:09:06 EST 2004

On Mar 20, Bradd W. Szonye wrote:
> Some of those are comparable; some aren't. PLT's letrec behavior is
> what C/C++ standards gurus call a "quiet change." If you switch to a
> Scheme that doesn't support threads, it's obvious pretty quickly;
> you immediately know that you need to find some kind of replacement
> behavior. Quiet changes are different; you don't realize that
> there's a problem until your program starts acting goofy in ways
> that are difficult to track down.

I don't know (and certainly don't care) about C/C++ standards, their
gurus, and their quiet or noisy changes.

In MzScheme there are lots of extensions to what is specified in R5RS,
and more than that -- R5RS is slim enough that any implementation that
does not add its own extensions is an unrealistic one.  Being based
only on things that *everyone* agreed on, I believe that R5RS
*encourages* such changes.

Having said that, I don't see any quitness problem -- open up the
MzScheme manual, and all places that have some extensions are clearly
specified.  It's easy -- search the help-desk for `foo', and if it is
found in the R5RS and in the MzScheme manual, then this is probably an
instance of standard behavior in R5RS and an extension discussed in
MzScheme.  `letrec' will get you to where the extensions are defined.

Is there anything "less quiet" that is needed?  Is there any
implementation that doesn't change things in a well-advertised way?
Is there any implementation that does *exactly* R5RS, nothing more,
nothing less?

And the most important question: Is there any point in continuing this

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

Posted on the users mailing list.