From ... From: Erik Naggum Subject: Re: multiple-value binding let and let* Date: 1999/08/19 Message-ID: <3144039684834581@naggum.no>#1/1 X-Deja-AN: 514600966 References: <3143984828088049@naggum.no> mail-copies-to: never Organization: Naggum Software; +47 8800 8879; +1 510 435 8604; http://www.naggum.no Newsgroups: comp.lang.lisp * Tim Bradshaw | The problem with this is that you can't put reasonable declarations in. | You'd like to be able to say: | | (let (a b) | (declare (type good-type a b)) | (setf (values a b) ...)) | | But you can't because A and B aren't always of GOOD-TYPE. I would insist that they are, and that a compiler that barfs on this is missing the point and is just being too anal about its type checking. if there are no references to a local binding prior to its first being set, who cares that it has to be NIL if ever there WERE a reference to it? the only way that could happen is if you change the code and recompile, and then it should barf. note that the language specification on this point may be interpreted to death to support both your point and mine. #:Erik -- (defun pringles (chips) (loop (pop chips)))