% 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はそれをたった一度しか評価しません。