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

Special declarations



Thank you for pursuing this bug.  There are at least two gross internal
contradictions in the manual with respect to declarations, as a result
of editing errors on my part.  I am very sorry for the confusion.
Let me clarify matters.

In your example

	(DEFUN FOO (A)
	  (LET ((A A))
	    (DECLARE (SPECIAL A))
	    ...)

the reference to A within the initialization of the LET is indeed subject
to the SPECIAL declaration and therefore does not refer to the parameter
named A.  This sentence in the first paragraph on page 127 of the Mary Poppins
edition:

	However, the reference to x in the first call to foo is
	a local reference, not a special one.

is in error and must be rewritten; that reference to x is in fact special.

Martin Griss has also pointed out that the parenthetical remark

	(but not the init forms)

that appears in paragraph 2, page 102, of the Mary Poppins edition
(and paragraph 3, page 95, of the Excelsior edition), in the description
of do and do*, is also in error; it should be replaced by a non-parenthetical

	to the init forms,

That is, the init forms in do and do* are in fact subject to
declarations in the body in exactly the same way as init forms are in
let and let*.

--Guy