summaryrefslogtreecommitdiff
path: root/control-flow.lisp
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-07-31 17:51:40 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-07-31 17:51:40 +0200
commit3ee58e9081354aed7bc45de457c0171aa78c613c (patch)
tree25bf7814372d7138bec5bd3ed47ad58cabc34591 /control-flow.lisp
parent64988d63eb7ff9f324395a03fc6a927b2639bb5e (diff)
Add PROG1, PROG2, NREVERSE, and ACONS.
Diffstat (limited to 'control-flow.lisp')
-rw-r--r--control-flow.lisp13
1 files changed, 13 insertions, 0 deletions
diff --git a/control-flow.lisp b/control-flow.lisp
index b03a666..d9998e2 100644
--- a/control-flow.lisp
+++ b/control-flow.lisp
@@ -38,6 +38,19 @@
`(setq ,name ,value))
+(defmacro prog1 (form &body forms)
+ (let ((varsym (gensym)))
+ `(let ((,varsym ,form))
+ ,@forms
+ ,varsym)))
+
+(defmacro prog2 (form1 form2 &body forms)
+ `(progn
+ ,form1
+ (prog1 ,form2
+ ,@forms)))
+
+
;; FIXME: Should be (EVAL-WHEN (:compile-toplevel) ...).
(unless (boundp '+block-mapping-sym+)
(defconstant +block-mapping-sym+ (gensym "BLOCK-NAME")))