From f2d46aaa6bd5788d956bb767d92da97916407724 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Sun, 23 Apr 2006 01:02:28 +0100 Subject: [PATCH] base: Reorder a bit. Organization: Straylight/Edgeware From: Mark Wooding Nothing significant actually changed. --- mdw-base.lisp | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/mdw-base.lisp b/mdw-base.lisp index 5203933..787255b 100644 --- a/mdw-base.lisp +++ b/mdw-base.lisp @@ -99,24 +99,6 @@ (defun whitespace-char-p (ch) ((#\space #\tab #\newline #\return #\vt #\formfeed) t) (t nil))) -(defmacro nlet (name binds &body body) - "Scheme's named let." - (multiple-value-bind (vars vals) - (loop for bind in binds - for (var val) = (pairify bind nil) - collect var into vars - collect val into vals - finally (return (values vars vals))) - `(labels ((,name ,vars - ,@body)) - (,name ,@vals)))) - -(defmacro while (cond &body body) - "If COND is false, evaluate to nil; otherwise evaluate BODY and try again." - `(loop - (unless `cond (return)) - ,@body)) - (declaim (ftype (function nil ()) slot-unitialized)) (defun slot-uninitialized () "A function which signals an error. Can be used as an initializer form in @@ -149,6 +131,27 @@ (defmacro let*/gensyms (binds &body body) `(progn ,@body) (car (more (mapcar #'pairify (listify binds))))))) +;;;-------------------------------------------------------------------------- +;;; Some simple yet useful control structures. + +(defmacro nlet (name binds &body body) + "Scheme's named let." + (multiple-value-bind (vars vals) + (loop for bind in binds + for (var val) = (pairify bind nil) + collect var into vars + collect val into vals + finally (return (values vars vals))) + `(labels ((,name ,vars + ,@body)) + (,name ,@vals)))) + +(defmacro while (cond &body body) + "If COND is false, evaluate to nil; otherwise evaluate BODY and try again." + `(loop + (unless `cond (return)) + ,@body)) + ;;;-------------------------------------------------------------------------- ;;; with-places -- [mdw]