[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: issue PROCLAIM-LEXICAL



> Rather than reply to each of the various question you raise, maybe this
> last one is the important one.

Actually, I'm now more confused rather than less.  My best guess is
that your objection to special declarations that override a lexical
or global proclamation is that special variables have indefinite
scope.  (But lexical variables don't -- they have lexical scope --
so lexical declarations that override are OK.)

But I'm not sure why this is so significant.  A special declaration
has a lexically bounded effect: it affects only certain bindings
(actually, at most one) and references.  Suppose I never use a special
proclamation.  It seems that you would still like to forbid me from
ever using a special variable that had the same name as a global
variable (in the LG sense).  And I don't see why.  Perhaps I could
see why, but I need an "intuition pump" (Dennett) or something.

Under the LG proposal, as in CL now, I can go around (statically) and
color all lexical and global variable references green and all special
references red.  (The green ones are just the ones that are not affected
by a special declaration or proclamation.)  The main difficulty in
doing this, so that local inspection isn't quite enough, is the
pervasive effect on bindings of special proclamations; but that
problem was already there and not introduced by LG.

Then, I can always tell what green references refer to.  There's
either a locally evident lexical binding -- in which case the
reference is to it -- or else the reference is to the global.  Red
references have to be resolved (D or G?) dynamically; but again that's
not something introduced by LG.

> Yes, a proclamation is more pervasive
> than any bounded set of DECLARE's inserted into code.

OK, but I didn't mean a bounded set; I meant every binding.  And I
think PROCLAIM ought to correspond to something that can be done with
DECLARE.

> In particular, the DECLAREs (of your examples) are in the same
> lexical scope; but the PROCLAIM might even be in another
> separately-compiled file.

I guess the problem is that I do not see why that is a decisive
factor.  Perhaps I picked the wrong example to elaborate.

-- Jeff