From baa9f58d849dfeee2fa14c5889d42a626c88699e Mon Sep 17 00:00:00 2001 From: Kevin Rosenberg Date: Sat, 24 Apr 2010 17:42:02 -0600 Subject: [PATCH] Mild macro optimizations --- macros.lisp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/macros.lisp b/macros.lisp index cc39ad4..bf47c63 100644 --- a/macros.lisp +++ b/macros.lisp @@ -86,13 +86,28 @@ (let ((it ,val)) ,@(cdr cl1)) (acond2 ,@(cdr clauses))))))) -(defmacro mac (expr) -"Expand a macro" - `(pprint (macroexpand-1 ',expr))) +(defmacro mac (form &key (stream *standard-output*) (full nil) (width 80) + (downcase t) + &environment env) + (multiple-value-bind (expanded expanded-p) + (funcall (if full #'macroexpand #'macroexpand-1) form env) + (write expanded + :stream stream + :pretty t + :right-margin width + :case (if downcase :downcase :upcase) + :length nil + :level nil + :circle nil + :gensym nil) + (fresh-line stream) + expanded-p)) (defmacro print-form-and-results (form) - `(format t "~&~A --> ~S~%" (write-to-string ',form) ,form)) - + (let ((r (gensym "RES-"))) + `(let ((r ,form)) + (format t "~&~A --> ~S~%" ',form r) + r))) ;;; Loop macros @@ -107,16 +122,16 @@ ,@body)) (defmacro for ((var start stop) &body body) - (let ((gstop (gensym))) + (let ((gstop (gensym "STOP-"))) `(do ((,var ,start (1+ ,var)) (,gstop ,stop)) ((> ,var ,gstop)) ,@body))) (defmacro with-each-stream-line ((var stream) &body body) - (let ((eof (gensym)) - (eof-value (gensym)) - (strm (gensym))) + (let ((eof (gensym "EOF-")) + (eof-value (gensym "EOF-VALUE-")) + (strm (gensym "STREAM-"))) `(let ((,strm ,stream) (,eof ',eof-value)) (do ((,var (read-line ,strm nil ,eof) (read-line ,strm nil ,eof))) -- 2.34.1