(defmacro o (x) `(progn (format t "[~a]=[~a]~%" (quote ,x) ,x) ,x)) (defmacro oo (&rest l) `(progn ,@(mapcar #'(lambda(x) `(o ,x)) l))) (defun bb () (let ((a 10) (b 20)) (oo a b))) (defun tag (x &optional (s t) (indent 0)) (if (listp x) (let ((head (car x)) (tail (cdr x))) (dolist (one tail) (terpri s) (dotimes (i (* 4 indent)) (format s " ")) (format s "<~a>" head) (tag one s (+ 1 indent)) (format s "" head))) (prin1 x)))