Método em Clojure

Dada uma função, nomeada ou anônima, usando algum clojure.reflecttruque podemos obter sua aridade ou, melhor ainda, todas as suas aridades com:

(defn arities
"Returns the parameter count of each invoke method of the input f. This function does NOT detect variadic functions and does NOT work with macros."
[f]
{:pre [f]}
(let [invokes (filter
#(re-find (re-pattern "invoke") (.getName %1))
(-> f class .getDeclaredMethods))]
(map #(alength (.getParameterTypes %1)) invokes)))