Special-Operator PROGN

UP


Special-Operator PROGN

Special Operator PROGN

構文

progn form* => result*

引数と戻り値

form - 暗黙のprogn
result - formの返却値

定義

prognformを与えられた順に評価します。

最後以外の各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

影響

なし。

例外

なし。

参考

prog1, prog2, 3.1. 評価

備考

Common Lispでは、多くの場所で暗黙のprognという構文で使われています。 これは、それらの構文の部分は、 多くのフォーム書くことができ、 連続で評価され、 最後以外のすべてのフォームの返却値は無視され、 最後のフォームの結果が返却されるということを意味しています。 そのような場所が制限なしに含まれる場所として、 例えば下記のようなものがあげられます。 ラムダ式のボディ部、 様々な制御文や条件文のフォームのボディ部 (例えば、case, catch, progn, when)。


TOP, Github