title: Clojure - How to make my macro expand before system macros?
body: <p>If I do, for example:</p>
  
  <pre><code>(defmacro qqq [] '(toString [this] "Qqq"))
  (reify Object (qqq))
  </code></pre>
  
  <p>it fails because of <code>reify</code> sees <code>(qqq)</code> instead of <code>(toString [this] "Qqq")</code>.</p>
  
  <p>The <a href="https://stackoverflow.com/questions/4434902/use-a-clojure-macro-to-automatically-create-getters-and-setters-inside-a-reify-ca/4435125#4435125">usual solution</a> is a macro that wraps "reify" call with my own thing, but it is longer and more intrusive.</p>
  
  <p>How to make my macros stronger that usual macros to be expanded first?</p>
  
  <p>Expecting something like:</p>
  
  <pre><code>(defmacro ^{:priority 100500} qqq [] '(toString [this] "Qqq"))
  (reify Object (qqq))
  </code></pre>
  
  <p>or</p>
  
  <pre><code>(defmacro qqq [] '(toString [this] "Qqq"))
  (expand-first #{qqq} (reify Object (qqq)))
  </code></pre>