From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!uio.no!nntp.uio.no!ifi.uio.no!not-for-mail From: Erik Naggum Newsgroups: comp.lang.lisp Subject: Re: Declarations in LET* Date: 10 Oct 2002 21:39:06 +0000 Organization: Naggum Software, Oslo, Norway Lines: 38 Message-ID: <3243274746571088@naggum.no> References: <87ofa2k2rb.fsf@bird.agharta.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: maud.ifi.uio.no 1034285946 17504 129.240.65.5 (10 Oct 2002 21:39:06 GMT) X-Complaints-To: abuse@ifi.uio.no NNTP-Posting-Date: 10 Oct 2002 21:39:06 GMT Mail-Copies-To: never User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.lisp:43658 * Edi Weitz | From playing around with CMUCL, SBCL, LispWorks, AllegroCL, and CLISP it | looks to me as if BAR-1 and BAR-2 in the following example | | (defun foo () | (declare (special *a*)) | *a*) | | (defun bar-1 () | (let ((*a* 37)) | (declare (special *a*)) | (let ((b (foo))) | b))) | | (defun bar-2 () | (let* ((*a* 37) | (b (foo))) | (declare (special *a*)) | b)) | | behaved identically, i.e. as if in the LET* form *A* is already | special when B is bound. It appears that you have received an answer to your question, but in case there is still some confusion, do or did you think that (let ((a 42)) (let ((b (foo))) (declare (special a)) b)) should yield a different result? If yes, why? -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.