title: Create a macro to return a reify (java Interface) but with a supplied quoted expression in clojure
body: <p>What I am trying to achieve is to implement an abstract class with reify inside a macro, but the expressions that should return on expansion time would be supplied to the macro quoted:</p>
  
  <pre><code>(defmacro a-printable
  [body]
  `(reify Printable
   (print [this g# pf# page#]
    (if (= page# 0)
     (do
      ~body ;; the supplied part
      (Printable/PAGE_EXISTS))
     (Printable/NO_SUCH_PAGE)))
  
  (def exp '(do (.translate g (.getImageableX pf) (.getImageableY pf))
                (.drawString g "foo" 10 10))) ;; the form to pass
  (a-printable exp)
  </code></pre>
  
  <p>The proplem is that in the expression I pass, I want to use the automatic generated vars defined inside the macro and inside reify <code>g#, pf#</code>.
  I tried to add the quoted expression with  <code>(ns-resolve *ns* g)</code> <code>(ns-resolve *ns* pf)</code> but with no lack, I am not sure that is being resolved inside the macro.
  The <code>g</code> is <code>java.awt.Graphics</code> which is an abstract class and the <code>pf</code> is <code>java.awt.print.PageFormat</code>, which is normal class with constructor.
  Does anyone has any idea how to achieve that, or turn me to the correct direction?</p>