% Special-Operator PROGN
Special Operator PROGN
progn
form* => result*
form - 暗黙のprogn
result - formの返却値
progn
はformを与えられた順に評価します。
最後以外の各formの値は切り捨てられます。
もしprogn
がトップレベルフォームに現れたら、
progn
内の全てのフォームは、
コンパイラによってトップレベルフォームであると見なされます。
(progn) => NIL
(progn 1 2 3) => 3
(progn (values 1 2 3)) => 1, 2, 3
(setq a 1) => 1
(if a
(progn (setq a nil) 'here)
(progn (setq a t) 'there)) => HERE
a => NIL
なし。
なし。
Common Lispでは、多くの場所で暗黙のprognという構文で使われています。
これは、それらの構文の部分は、
多くのフォーム書くことができ、 連続で評価され、
最後以外のすべてのフォームの返却値は無視され、
最後のフォームの結果が返却されるということを意味しています。
そのような場所が制限なしに含まれる場所として、
例えば下記のようなものがあげられます。
ラムダ式のボディ部、
様々な制御文や条件文のフォームのボディ部
(例えば、case
, catch
, progn
, when
)。