[plt-scheme] to define, or to let

From: Bradd W. Szonye (bradd+plt at szonye.com)
Date: Sat Mar 20 22:49:16 EST 2004

Bradd wrote:
>> Which is why it's dangerous and non-portable to rely on the
>> initialization order.

Eli Barzilay wrote:
> As well as relying on argument evaluation order, hash-tables,
> parameters, threads, custodians, various syntactic extensions,
> modules, syntax-case, actually everything in the sytax system beyond
> syntax-rules, any form of GUI, custodians, weak pointers, structures,
> exceptions, escape continuations, semaphores, regular expressions,
> channels, security guards, namespaces, external processes, etc.

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.
Bradd W. Szonye

Posted on the users mailing list.