diff options
Diffstat (limited to 'control-flow.lisp')
-rw-r--r-- | control-flow.lisp | 13 |
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"))) |