From: Vladimir Sedach Date: Sun, 12 Apr 2009 01:56:46 +0000 (-0600) Subject: Exported 'loop' from Parenscript package, moved utility functions to src/utils.lisp. X-Git-Url: http://git.hcoop.net/clinton/parenscript.git/commitdiff_plain/09a3438eebb856bfd71e40459c9c9096d3cd4e3e Exported 'loop' from Parenscript package, moved utility functions to src/utils.lisp. --- diff --git a/src/lib/ps-loop.lisp b/src/lib/ps-loop.lisp index d2938d3..223d508 100644 --- a/src/lib/ps-loop.lisp +++ b/src/lib/ps-loop.lisp @@ -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)) diff --git a/src/package.lisp b/src/package.lisp index 452de0e..3106bdc 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -92,6 +92,7 @@ #:do* #:dotimes #:dolist + #:loop ;; with #:with diff --git a/src/utils.lisp b/src/utils.lisp index 4e2066a..6d04137 100644 --- a/src/utils.lisp +++ b/src/utils.lisp @@ -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)))))