Thanks for your reply: > > As you can see, a call to FOO prints the expansion twice, a call to > > BAR only once. > > I suspect that the second print-out is the return value from print.
I don't think so: Usually, (print x) prints x, and just returns its value - it should be the same here, but that is at variance with the different numbers (see below). Also, the value returned by the print is just the macro expansion and is consumed by evaluation / compilation and so should not be printed. > > Moreover, when gensyms are involved, in those cases > > where two versions are printed, the gensyms have different numbers, > > I don't follow. Perhaps an example is in order? ,---- | CL-USER> (defmacro ex1 () | (let ((a (gensym))) | (print `(let () (list ',a))))) | EX1 | CL-USER> (ex1) | | (LET () | (LIST '#:G5657)) | (LET () | (LIST '#:G0)) | (#:G0) `---- There are two LET-expressions with two different numbers in the gensym for a. Albert.
