title: clojure recursive macro definition
body: <p>
  Hi, I am learning Clojure macros, and I am trying to write a macro that translate infix forms into prefix forms like this: (9 + (1 * 3)) => (+ 9 (* 1 3))
  </p>
  
  <pre><code>(defn infix [form]
    (list (second form) (first form) (nth form 2)))
  
  (defmacro r-infix [form]
    (if (coll? form)
      (map r-infix (infix form))
      form))
  
  (r-infix (9 + (1 * 2)));;=&gt;ArityException
  </code></pre>
  
  <p>
  But If define the macro in the following way, it works out fine:</p>
  
  <pre><code>(defn infix [form]
    (list (second form) (first form) (nth form 2)))
  
  (defn r-infix-fn [form]
    (if (coll? form)
      (map r-infix-fn (infix form))
      form))
  
  (defmacro r-infix [form]
    (r-infix-fn form))
  
  (r-infix (9 + (1 * 2)));;=&gt;11
  </code></pre>
  
  <p>
  I have some difficulty debugging the first example, can any one help me out?</p>