% Macro POP
Macro POP
pop
place => element
place - place
,
リストである値(ドットリストか循環リストの可能性があります)
element - オブジェクト(placeの内容のcar
部)
pop
はplaceから値を読み、
取得されたリストのcar
を取得し、
placeにリストのcdr
を書き込み、
そして最後にリストから取得した元のcar
部を返却します。
placeのサブフォームの評価については、
5.1.1.1. place
のサブフォームの評価をご確認ください。
(setq stack '(a b c)) => (A B C)
(pop stack) => A
stack => (B C)
(setq llst '((1 2 3 4))) => ((1 2 3 4))
(pop (car llst)) => 1
llst => ((2 3 4))
placeの内容は修正されます。
なし。
なし。
(pop place)
の効果は、だいたい次と同等です。
(prog1 (car place) (setf place (cdr place)))
ただし、これはサブフォームを3回評価するのに対して、
pop
はそれをたった一度しか評価しません。