title: How to code a variadic defmulti/defmethod in clojure
body: <p>I have a defmulti/defmethod group that take pairs of arguments like so...</p>
  
  <pre><code>(defmulti foo "some explanation" (fn [arg1 arg2] (mapv class [arg1 arg2])))
  (defmethod foo [N P] (-&gt;L 1 2 3))
  (defmethod foo [L P] (-&gt;N 5))
  (defmethod foo [P N] (-&gt;L 6 7 8))
   ...
  </code></pre>
  
  <p>Which are called in the way you might expect.</p>
  
  <pre><code>(foo (-&gt;N 9) (-&gt;P 9))
  </code></pre>
  
  <p>What I would like is to call 'foo' with more than 2 arguments.
  I know how to do this with functions and I suppose I could use some wrapper function that split the args into pairs and then combined the result (or just use 'reduce') but that seems wrong.</p>
  
  <p>My question then is...
  What is the idiomatic way to define a variadic multi-function in clojure?</p>