У меня есть группа defmulti/defmethod, которая принимает такие пары аргументов...
(defmulti foo "some explanation" (fn [arg1 arg2] (mapv class [arg1 arg2])))
(defmethod foo [N P] (->L 1 2 3))
(defmethod foo [L P] (->N 5))
(defmethod foo [P N] (->L 6 7 8))
...
Которые называются так, как вы могли бы ожидать.
(foo (->N 9) (->P 9))
Я хотел бы вызвать «foo» с более чем двумя аргументами. Я знаю, как это сделать с помощью функций, и я полагаю, что мог бы использовать некоторую функцию-оболочку, которая разбивает аргументы на пары, а затем объединяет результат (или просто использует «уменьшить»), но это кажется неправильным.
Тогда мой вопрос... Каков идиоматический способ определить вариативную многофункциональность в clojure?
defmethod
телам вариативную подпись. - person Alex   schedule 01.10.2014