Next: 16 集合
Up: 15 制御文マクロ
Previous: 15.2 繰り返し文
関数を順に評価してゆき,途中に
飛び先ラベルをおいて,go文などを用いて,そのラベルへ飛ぶことによって
繰り返し構造などを定義できる prog式があります.
これもマクロで定義されています.
<cl> (prog (x y z)
(setq x 0)
loop
(if (> x 10) (go exit))
(print x)
(setq x (1+ x))
(go loop)
exit
(list x))
0
1
2
3
4
5
6
7
8
9
10
NIL
<cl>
この progは実はマクロで,
<cl> (macroexpand
'(prog (x y z)
(setq x 0)
loop
(if (> x 10) (go exit))
(print x)
(setq x (1+ x))
(go loop) exit (list x)))
(LET (X Y Z) (DECLARE)
(BLOCK NIL
(TAGBODY
(SETQ X 0)
LOOP
(IF (> X 10) (GO EXIT))
(PRINT X)
(SETQ X (1+ X))
(GO LOOP)
EXIT
(LIST X))))
T
<cl>
となっています.スペシャルフォームの let,block, tagbodyが使われたマク
ロとして定義されていることが分かります.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日