title: clojure macro unquote splicing list of function calls
body: <p>I want to write an ACL module by writing a macro, this macro is to check the result of each function call in the macro, if one return false, then the ACL will fail without run the following function call. If one return true and there are still function calls to check, then check the following until the last one. </p>
  
  <pre><code>(defmacro checks
    [head &amp; tail]
    `(let [status# ~head]
       (if (and (true? status#)
                (seq '~tail))
         (checks ~@tail)
         status#)))
  </code></pre>
  
  <p>I will call this macro like this:</p>
  
  <pre><code>(checks (module1 args) (module2 args))`
  </code></pre>
  
  <p>but this will fail for <code>(check ~@tail)</code> in the macro definition. The problem is that I want to <strong><em>Unquote Splicing</em></strong> the list but without calling each function in the list.</p>