Quick clojure question, I think this is mostly syntax related. How do I dispatch a multimethod based on specific type signatures of the arguments, for example:
(defn foo
([String a String b] (println a b))
([Long a Long b] (println (+ a b))
([String a Long b] (println a (str b))))
I want to extend this to arbitrary stuff, eg two strings followed by a map, to maps followed by a double, two doubles followed by an IFn etc...