From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!colt.net!newsfeed.esat.net!nslave.kpnqwest.net!nloc2.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader3.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: declaim? proclaim? References: <3c6f305e$1_4@news2.uncensored-news.com> <3c702607$1_7@news4.uncensored-news.com> <87eljju3yr.fsf@orion.bln.pmsf.de> Mail-Copies-To: never From: Erik Naggum Message-ID: <3223022793121740@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 29 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 18 Feb 2002 12:06:30 GMT X-Complaints-To: newsmaster@KPNQwest.no X-Trace: nreader3.kpnqwest.net 1014033990 193.71.199.50 (Mon, 18 Feb 2002 13:06:30 MET) NNTP-Posting-Date: Mon, 18 Feb 2002 13:06:30 MET Xref: archiver1.google.com comp.lang.lisp:26760 * Tim Bradshaw | I thought about this a bit, and I'm now confused. Imagine a situation | like this: | | (defvar *foo* (big-complicated-function)) | | (declaim (type fixnum) *foo*) | | Can this code be correct? Yes. It would be even if you switched the two top-level forms. | I'm not sure it can, because at compile time, *FOO* is not yet defined Of course it is. defvar must affect the compilation environment at least to the extent that it remembers that *foo* is a special variable. However, it does not necessarily have a _value_ until load-time. | So the type declaration can't (or may not) be true at compile time, I | think. The declarations are associated with the symbols, not with the bindings, but they affect the bindings because of the declarations associated with the symbol. /// -- In a fight against something, the fight has value, victory has none. In a fight for something, the fight is a loss, victory merely relief.