git » jacl.git » commit 6cfd15c

prog1 and prog2

author Alan Dipert
2020-06-20 04:38:39 UTC
committer Alan Dipert
2020-06-20 04:38:39 UTC
parent 5eabef94c972a196b3fdefbf5983247d703bd767

prog1 and prog2

boot.lisp +16 -0
jacl-tests.lisp +8 -0

diff --git a/boot.lisp b/boot.lisp
index 5c12307..c18febf 100644
--- a/boot.lisp
+++ b/boot.lisp
@@ -65,6 +65,22 @@
 (defmacro progn (&rest forms)
   `(jacl:%progn ,@forms))
 
+(%export 'prog1)
+(defmacro prog1 (first-form &rest forms)
+  (let ((ret (gensym)))
+    `(let ((,ret ,first-form))
+       ,@forms
+       ,ret)))
+
+(%export 'prog2)
+(defmacro prog2 (first-form second-form &rest forms)
+  (let ((ret (gensym)))
+    `(progn
+       ,first-form
+       (let ((,ret ,second-form))
+         ,@forms
+         ,ret))))
+
 (%export 'when)
 (defmacro when (test &rest forms)
   `(if ,test (progn ,@forms)))
diff --git a/jacl-tests.lisp b/jacl-tests.lisp
index bc37106..df8425c 100644
--- a/jacl-tests.lisp
+++ b/jacl-tests.lisp
@@ -193,6 +193,14 @@
 (defun now ()
   (\. (%js "performance") (|now|)))
 
+;; (defmacro with-profile (memo &rest body)
+;;   (let ((memo# (gensym)))
+;;     `(let ((,memo# (\. ,memo (|toString|))))
+;;        (\. (%js "console") (|profile| ,memo#))
+;;        (prog1 (progn ,@body)
+;;          )
+;;        )))
+
 (defmacro time (memo &rest body)
   (let ((start (gensym))
         (ret (gensym)))