多値を変数に代入する - lisp-cookbook-ja/common-lisp GitHub Wiki
多値(複数の値)を返す関数があります。 単純にletで変数に束縛しただけでは最初の値しか得られません。 多値のそれぞれを変数に束縛するにはmultiple-value-bindを使います。
(multiple-value-bind (q r)
(truncate 11 3)
(format t "~A ~A~%" q r))
;-> 3 2
;=> NIL
多値をリストに格納して返してくれるmultiple-value-listもあります。
setf と values を使って代入することもできます。
(let (q r)
(setf (values q r) (truncate 11 3))
(format t "~A ~A~%" q r))
;-> 3 2
;=> NIL