*
→ first-form-resultsmultiple-value-prog1 evaluates first-form and saves all the values produced by that form. It then evaluates each form from left to right, discarding their values.
(defparameter *temp* '(1 2 3))
→*TEMP*
*temp*
→(1 2 3)
(multiple-value-prog1 (values-list *temp*) (defparameter *temp* nil) (values-list *temp*))
→1 2 3
None.
None.
None.
None.