pop

Das Macro pop ist das Gegenstück zu push, es entnimmt eine S-Expression von einem Stapel. Das Macro erwartet ein Symbol als Argument, das nicht ausgewertet wird. Der Wert des Symbols muss eine Liste sein. Während der Auswertung von pop wird diese Liste um das erste Element verkürzt. Das erste Element wird zum Rückgabewert des Aufrufs.

(setq pop
  (mlambda args
    (let
      ((arg (first args)))
      (list
        prog1
        (list car arg)
        (list
          setq
          arg
          (list cdr arg))))))