% 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 ///)