Subject: Re: multiple-value binding let and let*
From: Erik Naggum <>
Date: 1999/08/19
Newsgroups: comp.lang.lisp
Message-ID: <>

* 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.

  (defun pringles (chips)
    (loop (pop chips)))