[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: edsel!bhopal!jonl@NAVAJO.STANFORD.EDU
- Subject: Issue: PROCLAIM-LEXICAL
- From: Jonathan A Rees <JAR@AI.AI.MIT.EDU>
- Date: Wed, 29 Apr 87 22:53:15 EDT
- Cc: CL-Cleanup@SAIL.STANFORD.EDU, KMP@MX.LCS.MIT.EDU
- In-reply-to: Msg of Wed 29 Apr 87 16:30:59 PDT from edsel!bhopal!jonl at navajo.stanford.edu (Jon L White)
Date: Wed, 29 Apr 87 16:30:59 PDT
From: edsel!bhopal!jonl at navajo.stanford.edu (Jon L White)
So I'm a bit concerned about the proposal to add yet a third
environment, the "global lexical", which doesn't address this
I'm having trouble understanding how you count environments. I count a
total of four:
1. lexical LAMBDA-bindings
2. global lexical
3. dynamic LAMBDA-bindings
4. global dynamic
KMP doesn't suggest ADDING a global lexical environment; the global
lexical environment is already there in the GENERAL and RESTRICTED
proposals. He merely suggests making it not be identical to the global
dynamic environment. This would make a total of 4 environments, not 3.
I tend to think of 2 and 4 as being part of 1 and 3. This is consistent
if you imagine that there's an immense cosmic LAMBDA surrounding all
the programs in the world; this LAMBDA binds all possible names.
I have no opinion at this point on the virtues of KMP's amendment.
In this example, it would/should be illegal to lambda-bind x if it were
declared "global"; thus it is quite satisfactory to use the
shallow-binding value cell as both the "global" cell and the "special"
This proposal is even more restrictive than RESTRICTED. I see no reason
to impose this restriction, and I see Scheme compatibility as a big
reason that we SHOULD allow lambda-binding variables which have global
bindings. The RESTRICTED proposal seems to give you everything you want
-- it allows you to have a single global value cell in
shallow-dynamic-binding implementations, and it allows the desired
performance advantages in deep-dynamic-binding implementations. Why do
you want to rule out lexically lambda-binding global variables? Does
this have something to do with shallow lexical binding?
If I have told you something you didn't already know, or if you still
don't understand what I'm getting at, how can I make the proposals