[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Moon@STONY-BROOK.SCRC.Symbolics.COM
- Subject: issue PROCLAIM-LEXICAL
- From: Jon L White <email@example.com>
- Date: Thu, 2 Feb 89 05:15:43 PST
- Cc: firstname.lastname@example.org, KMP@STONY-BROOK.SCRC.Symbolics.COM, jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK, masinter.pa@Xerox.COM, cl-cleanup@SAIL.STANFORD.EDU
- In-reply-to: David A. Moon's message of Fri, 27 Jan 89 20:51 EST <19890128015132.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
... provided that we can guarantee that you would never have to
access the symbol's global value when there is a special binding of
the variable. I believe this was the purpose of the amendment that
. . .
I believe that the reason people have this goal is not at all an issue
of desired language semantics, but instead that they believe it would be
too difficult in a shallow-bound implementation to allow access to the
global value in the presence of special bindings. I used to believe
that too, but I figured out that the implementation expense can be very
small. Here is why: . . .
This topic has had enormous amounts of discussion a long time ago.
Perhaps you weren't party to the discussions back then, by my objection
-- shared by several others (e.g. Julian Padgett?) -- is *** not
at all *** on the performance implications. In fact, in the earlier
discussion, I likened the algorithm for global-lexical access in
shallow bound implementations as a "dual" to that for dynamic access
in a deep bound implementation; efficient algorithms for this problem
have been known for nearly 15 years or more.
Now, QLISP is a deep bound implementation, and thus already has these
algorithms working (patterened, not unsurprisingly, after some of
the Interlisp work). But we strongly feel that there should not be
two conceptually different "top level" environments -- a global-lexical
one and a global-dynamic one. The counter argument that these would
be implemented as exactly the same set of value cells is not relevant.
Our feeling (if indeed I speak for some of the other objectors) is that
local lexical overrides of global proclamations are acceptable; the
override has only tightly constrained lexical scope. Thus a local
"lexical" declaration for a variable proclaimed to be SPECIAL is
not troublesome. But an override of either a SPECIAL or a GLOBAL
proclamation that has indefinite scope (yes "scope", not extent) is a
terribly bad and confusing idea. A special declaration or binding of
a variable globally proclaimed LEXICAL (or, GLOBAL as in QLISP's case)
would be such a violation.
-- JonL --