Update of /project/elephant/cvsroot/elephant/src/utils In directory clnet:/tmp/cvs-serv27096/utils
Modified Files: convenience.lisp package.lisp Log Message: Placeholders and notes for query engine
--- /project/elephant/cvsroot/elephant/src/utils/convenience.lisp 2007/03/03 17:25:00 1.4 +++ /project/elephant/cvsroot/elephant/src/utils/convenience.lisp 2007/03/06 04:15:27 1.5 @@ -45,3 +45,27 @@ (let ((results (car list))) (dolist (elem (cdr list) results) (setq results (append results elem))))) + +(defmacro ifret (pred alt) + "If pred is non-null, return the value, otherwise return the alternate value" + (with-gensyms (res) + `(let ((,res ,pred)) + (if ,res ,res ,alt)))) + +(defmacro aif (pred default alt) + "Anaphoric if" + `(let ((it ,pred)) + (if it ,default ,alt))) + +(defmacro awhen (pred &rest body) + "Anaphoric when" + `(let ((it ,pred)) + (declare (ignorable it)) + (when it + ,@body))) + +(defun mklist (elts) + "Make sure the argument is a list or + make it a list if it's an atom" + (if (listp elts) elts (list elts))) + --- /project/elephant/cvsroot/elephant/src/utils/package.lisp 2007/02/24 14:52:00 1.4 +++ /project/elephant/cvsroot/elephant/src/utils/package.lisp 2007/03/06 04:15:27 1.5 @@ -32,4 +32,9 @@ #:do-subsets #:subsets #:remove-keywords - #:with-gensyms)) + #:with-gensyms + #:ifret + #:aif + #:awhen + #:mklist + #:it))