I'd argue that the things that are wrong with "dynamic scope" in the Lisp sense (usage #1) are just as wrong with "non-static scope" (usage #2). Dynamic scope in Lisp was anti-modular because the meaning of a variable could be affected by any code throughout the arbitrary control flow of the program. The same is true whenever you have variables whose bindings are decided by dynamic control flow. Lisp's dynamic binding was just a special case of the general phenomenon of variables whose bindings are determined dynamically. This is why, in my mind, the distinction isn't actually all that important.
Regardless, it's clear I caused confusion by my usage. I'll make an effort on es-discuss to be explicit about which I mean. Dave On Apr 15, 2011, at 6:48 PM, Mark S. Miller wrote: > On Fri, Apr 15, 2011 at 6:28 PM, David Herman <[email protected]> wrote: > The fact is that "dynamic scope" is used to mean multiple things: 1) the > "stack-like" semantics employed by e.g. the original Lisps, and 2) any > non-static scoping semantics. The former was so famous that it came to be the > common usage of the term, but #1 is really just a special case of #2. I've > seen people use it both ways. Sam's using it the second way, Dmitry is using > it the first way (and trying to claim that Sam's way is wrong). It's not > really a deep issue, just ambiguous terminology. > > #1 has such a long history and is such a clear concept that I really wish to > preserve our ability to talk about it clearly. Why dynamic scoping was > attractive and why it turns out to be bad is one of the most important > lessons from the history of language design. For me "dynamic scoping" will > always be #1. For #2, "non-static scope" is adequate and perfectly clear. > > > -- > Cheers, > --MarkM
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

