KMP's CL References


This is the literal text of KMP's personal notes on failed issue PROCLAIM-LEXICAL. Dates shown are the dates of creation of the notes, sometimes accompanied by the version of this issue to which the notes refer.

These notes are part of no official record. They have no official standing.


PROCLAIM-LEXICAL (Version 9, 08-Dec-88)
 Author:   Rees, Moon, Masinter, Pitman
 Forum:    Cleanup
 Status:   Failed v9 (Mar 89)
 Summary:  Add LEXICAL, GLOBAL, and CONSTANT proclamations.  (only LEXICAL survives)
 SyVote:   Yes with comment (Version 9, LG)
 Genera Impact: this would have been a 2-week or 3-week job
 Comments: ----- Pitman 13-Dec-88 (Version 9) -----
	   Looks good to Pitman. Others may be less happy.
	   Sandra wants us to specify which rules for free declarations
	   we're using in the example. Sandra doesn't like the fact that
	   lexical and special vars share a cell. Jeff wonders why specials
	   aren't LDG since they ought to search lexical first; has some
	   sort of pre-painting model he prefers. Jeff also thinks lexically
	   binding a constant should be ok; isn't this irrelevant?
	   ----- Moon 02-Jan-89 (Version 9) -----
	   Approved: LG.
	   I cannot strongly favor this, since it's a fairly radical change.
	   Are free references to unproclaimed variables special (DG) or lexical (G)?
	   02-Jan-89 by KMP re: Version 9
	   Probably we should clarify that unproclaimed free variables are an error
	   and a warning should be issued.
	   ----- Moon 21-Jan-89 -----
	   On the above issue, CLtL unfortunately says explicitly that free references
	   to unproclaimed and undeclared variables are SPECIAL.  Also making it an
	   error would break the current practice of just typing SETQ at the interpreter,
	   people felt during the discussion.
	   There was a flurry of amendments, probably attempting to "fix" the "problem"
	   that a shallow-bound dynamic variable can obscure access to the global lexical
	   variable.  We already know that this can be fixed in Lisp Machines by making
	   a dtp-external-value-cell-pointer point from the value cell to the global
	   lexical cell, and in stock hardware by adding a couple of instructions to
	   test a bit saying whether the thing is bound.  The amendments were:
		Can't dynamic bind if proclaimed lexical (passed 11 to 5)
		Referencing a free variable that is neither proclaimed nor declared
		LEXICAL nor SPECIAL has undefined results (not voted)
		A free lexical declaration of a variable with no lexically
		visible binding is an error; use PROCLAIM (not voted)
	   Returned to committee
	   ----- Pitman 26-Mar-89 (Version 9) -----
	   I guess no work was done on this since January. Sigh.
	   ----- Pitman 10-Apr-89 -----
	   KMP made a friendly amendment to clarify the status of undeclared
	   free variables (as undefined).
	   GZ wanted an amendment that would make it an error to use the LEXICAL
	   declaration when there was not a lexically visible binding to which
	   it might refer.  Her amendment failed 5-12.
	   The unamended proposal finally failed 6-11.
	   Moon thinks it was this that made Jeff Dalton lose his temper
	   (outside the room).

First publication and Copyright 2001 by Kent M. Pitman. All Rights Reserved.