1> (defmacro dbg (expr) (with-gensyms (val) ^(let ((,val ,expr)) (format t "~a: ~s -> ~s\n" (source-loc-str ',expr) ',expr ,val) ,val))) dbg 2> (dbg (cons 1 2)) expr-2:1: (cons 1 2) -> (1 . 2) (1 . 2) 3> (dbg (+ 2 2)) expr-3:1: (+ 2 2) -> 4 4 4> (progn (dbg (list 1 2)) (dbg (cons 1 2)) (dbg (+ 1 2))) expr-4:2: (list 1 2) -> (1 2) expr-4:3: (cons 1 2) -> (1 . 2) expr-4:4: (+ 1 2) -> 3 3