From 09a3438eebb856bfd71e40459c9c9096d3cd4e3e Mon Sep 17 00:00:00 2001 From: Vladimir Sedach Date: Sat, 11 Apr 2009 19:56:46 -0600 Subject: [PATCH] Exported 'loop' from Parenscript package, moved utility functions to src/utils.lisp. --- src/lib/ps-loop.lisp | 11 ----------- src/package.lisp | 1 + src/utils.lisp | 11 +++++++++++ 3 files changed, 12 insertions(+), 11 deletions(-) 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))))) -- 2.20.1