[plt-scheme] to define, or to let

From: Richard Cleis (rcleis at mac.com)
Date: Sat Mar 20 23:04:03 EST 2004

I am not complaining about letrec, I was just responding.  I use let* 
for this sort of thing anyway, and now I know why.  Is that dangerous?


> 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
> http://www.szonye.com/bradd

Posted on the users mailing list.