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