In the "Macro Basics" section, he seems to completely glaze over the _other_ problem with unhygenic macros.[1]<p>Consider:<p><pre><code> (defmacro square (x)
`(* ,x ,x))
(let ((* my-vector-dot-product))
...
(square (* bar baz)))
</code></pre>
He seems a bit brash in his attacks on Scheme and insistence that hygenic macros are bad. He doesn't even mention Clinger's explicit renaming macros which solve the problem without using a DSL (an approach which he derides).<p>Also, what about side effecting arguments to macros? I'm hesitant to put too much credence in this book when it seems to ignore significant problems with defmacro.<p>[1] <a href="http://letoverlambda.com/index.cl/guest/chap3.html#sec_5" rel="nofollow">http://letoverlambda.com/index.cl/guest/chap3.html#sec_5</a>