Exported 'loop' from Parenscript package, moved utility functions to src/utils.lisp.
authorVladimir Sedach <vsedach@gmail.com>
Sun, 12 Apr 2009 01:56:46 +0000 (19:56 -0600)
committerVladimir Sedach <vsedach@gmail.com>
Sun, 12 Apr 2009 01:58:15 +0000 (19:58 -0600)
src/lib/ps-loop.lisp
src/package.lisp
src/utils.lisp

index d2938d3..223d508 100644 (file)
@@ -1,16 +1,5 @@
 (in-package :parenscript)
 
-(defmacro aif (test-form then-form &optional else-form)
-  `(let ((it ,test-form))
-     (if it ,then-form ,else-form)))
-
-(defmacro once-only ((&rest names) &body body) ;; the version from PCL
-  (let ((gensyms (loop for nil in names collect (gensym))))
-    `(let (,@(loop for g in gensyms collect `(,g (gensym))))
-       `(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
-          ,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
-                ,@body)))))
-
 (defun complex-js-expr? (expr)
   (if (symbolp expr)
       (find #\. (symbol-name expr))
index 452de0e..3106bdc 100644 (file)
@@ -92,6 +92,7 @@
       #:do*
       #:dotimes
       #:dolist
+      #:loop
 
       ;; with
       #:with
index 4e2066a..6d04137 100644 (file)
@@ -104,3 +104,14 @@ SOMEGLOBAL."
   (cond ((null x) acc)
         ((atom x) (cons x acc))
         (t (flatten (car x) (flatten (cdr x) acc)))))
+
+(defmacro aif (test-form then-form &optional else-form)
+  `(let ((it ,test-form))
+     (if it ,then-form ,else-form)))
+
+(defmacro once-only ((&rest names) &body body) ;; the version from PCL
+  (let ((gensyms (loop for nil in names collect (gensym))))
+    `(let (,@(loop for g in gensyms collect `(,g (gensym))))
+       `(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
+          ,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
+                ,@body)))))