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