% Variable *, **, ***
Variable *
オブジェクト
実装依存
変数*, **, ***は、
Lispのread-eval-printループによって管理されている、
ループを通して毎時印刷した結果の保存された値です。
*の値はもっとも最近印刷された主値であり、
**の値は*の前の値であり、
***の値は**の前の値です。
もし複数の値が生成されたとき、
*は最初の値のみを含みます。
もしゼロ個の値が生成されたとき、
*はnilを含みます。
*, **, ***の値は、
Lispのread-eval-printループによって
トップレベルフォームの返却値が印刷される前に即座に更新されます。
もしそのようなフォームの評価が通常の返却の前に中断されたとき、
*, **, ***の値は更新されません。
(values 'a1 'a2) => A1, A2
'b => B
(values 'c1 'c2 'c3) => C1, C2, C3
(list * ** ***) => (C1 B A1)
(defun cube-root (x) (expt x 1/3)) => CUBE-ROOT
(compile *) => CUBE-ROOT
(setq a (cube-root 27.0)) => 3.0
(* * 9.0) => 27.0
Lispのread-eval-printループ
* == (car /)
** == (car //)
*** == (car ///)