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

must be wrong



    Date: 21 Dec 83 2153 EST (Wednesday)
    From: Guy.Steele at CMU-CS-A
    To recapitulate: ...
    	(LET* ((A B)
    	       (B A))
    	  (DECLARE (SPECIAL A B))
    	  ...)
    Clearly both bindings should be special.  Should either initializer
    be special?  Knotty problems lurk here, ...

They certainly do.  I do not assert that I have an answer to this problem
that I think is acceptable to introduce into Common Lisp at this point.  I
do think that the current situation is quite clearly broken.  (Moon's
recent proposal makes me least unhappy, but that is not the same things as
happyness.)

In the example above I see two variables named A and two variables named B.
Each variable occurs exactly once in the fragment (ignoring the DECLARE).
You assert that according to Mary Poppins (!) the special declaration
refers to all four occurences, even though only two names are mentioned in
the DECLARE.  I claim that this is ugly and a symptom of a confusion
between variables, and occurrences of the names of variables.  I would like
special declarations to allow me to talk about variables themselves, not
about occurrences of their names.  Moon's proposal at least has the feature
that if I know where a variable is bound I can attach declarations to the
variable itself.