(defun loo() (let ((x 1)) (declare (special x)) ;; 'x is now a dynamic variable within the 'let body form (naz))) ;; 'naz is called with the dynamic binding over 'x (loo) ;; returns the list(2 1). 'symbol-value returns (1) for the value of 'x: again, behavior as expected

Which is as it should be. So did I miss something in the paper, or was something not addressed about local special variables vs global special variables? Thanks.

From CLHSdefvar has a side effect:If a defvar or defparameter form appears as a top level form, the compiler must recognize that the name has been proclaimed special.So your z is already proclaimed special.

Goheeca wrote:From CLHSdefvar has a side effect:If a defvar or defparameter form appears as a top level form, the compiler must recognize that the name has been proclaimed special.So your z is already proclaimed special.