chip@ateng.com (Chip Salzenberg) (11/15/89)
I've been reading and re-reading the relevant sections in CLtL, and I've been unable to answer this question. Consider this code: (defvar *parrot* "live") ; Global value: "live" (defun cleese () (let ((*parrot* "dead")) (declare (special *parrot*)) ; Dynamic value: "dead" (palin))) (defun palin () (print *parrot*)) ; Which will I see?? (cleese) ; What will be printed? When (cleese) calls (palin), the global value of *parrot* is "live" and the most recent dynamic value is "dead". Which is printed? And where in CLtL is this question answered? I know that if I really want the dynamic value, I can write: (defun palin () (locally (special *parrot*) (print *parrot*))) But is the "locally special" necessary, even in the absence of any lexical bindings? And if it isn't necessary, how can I access the _global_ value ("dead")? E-Mail or post as you like. I'll summarize mail to the net. -- You may redistribute this article only to those who may freely do likewise. Chip Salzenberg at A T Engineering; <chip@ateng.com> or <uunet!ateng!chip>