From d270117a18a28a1bebdb687fd794b5cc89f1559d Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 29 Aug 1999 20:23:54 +0000 Subject: [PATCH] (push, pop): New macros. --- lisp/subr.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lisp/subr.el b/lisp/subr.el index f4f695e8108..a80383467d3 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -51,6 +51,21 @@ BODY should be a list of lisp expressions." ;; depend on backquote.el. (list 'function (cons 'lambda cdr))) +(defmacro push (value listname) + "Add VALUE to the list which is the value of LISTNAME. +This is equivalent to (setq LISTNAME (cons VALUE LISTNAME)). +LISTNAME must be a symbol." + (list 'setq list + (list 'cons value list))) + +(defmacro pop (listname) + "Return the first element of LISTNAME's value, and remove it from the list. +LISTNAME must be a symbol whose value is a list. +If the value is nil, `pop' returns nil but does not actually +change the list." + (list 'prog1 (list 'car listname) + (list 'setq listname (list 'cdr listname)))) + (defmacro when (cond &rest body) "(when COND BODY...): if COND yields non-nil, do BODY, else return nil." (list 'if cond (cons 'progn body))) -- 2.39.5