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

Issue: PROCLAIM-LEXICAL (Version 8)



    Date: Tue, 18 Oct 88 14:26:28 PDT
    From: Jon L White <jonl@lucid.com>

    ... The LG proposal doesn't clearly spell out that it is an error to have 
    dynamic bindings for variables declared LEXICAL -- I don't yet see it as
    being distinct from the LDG proposal.

It isn't distinct if you prohibit such bindings. But it's gratuitous to
do so, in my opinion.

If by variable you mean variable name, it is not an error to have a
dynamic binding for a variable whose name has been proclaimed lexical.
Nor is it an error to have a lexical binding of a variable whose name
has been proclaimed special. That's what example 2 illustrates.  A
stripped down version is:

 (PROCLAIM '(LEXICAL X))
 (PROCLAIM '(SPECIAL Y))

 (SETQ X 1 Y 2)

 (DEFUN FOO (X Y)
   (DECLARE (SPECIAL X) (LEXICAL Y))
   (LIST X (LOCALLY (DECLARE (LEXICAL X)) X)
         Y (LOCALLY (DECLARE (SPECIAL Y)) Y)))

 (FOO 3 4) => (3 1 4 2)				;LG

    In particular, in the Proposal part, I would change:

      Clarify that dynamic binding does DG lookup.  That is, variables
      declared SPECIAL would be looked up first in the dynamic
      environment (D) and then in the global environment (G) if not found
      in the lexical. Further clarify that SYMBOL-VALUE does DG lookup.

If this is really out of the proposal; it has a typo. "lexical" in the
last line should be "dynamic".

I will ammend the proposal to make some of this clear. At that time I'll
review your wording changes in more detail and if they look good, I'll
merge them.

Your message was a bit rambly and so I had trouble extracting a `bottom
line.' Am I to mark you as favoring LG over LDG (in the Discussion)?