[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

multiple-value-bind pervasive-ness ...



I know this must have come up before ..

Is the scope of the declarations in a multiple-value-bind to
include to evaluation of the form which produces the multiple-values?

For example ...

(SETQ A :SPECIAL-A)

(DEFUN HACK (A)
   (MULTIPLE-VALUE-BIND (A SECOND-VALUE)
	(VALUES A 'DUMMY)
	(DECLARE (SPECIAL A))
	(LIST A SECOND-VALUE)))

Should (HACK :LEXICAL-A) return (:SPECIAL-A DUMMY) or (:LEXICAL-A DUMMY) ?

  The reason for the second-value is to avoid what a compiler
might do as a rewrite to a let binding in which case the
answer is fairly clear. If the answer is that the declaration
does NOT apply to the evaluation of the value producing
form, then a rewrite into the most obvious let is of course illegal.

--David