2
Я хочу, чтобы иметь возможность использовать мульти-метод, клонировать его как отдельную переменную и добавлять к ней без изменения оригинала. Как это может быть сделано?Можно ли клонировать мультиметод?
(defmulti hello :type)
(defmethod hello :a
[e] (assoc e :a 1))
(hello {:type :a})
=> {:type :a :a 1}
;; my attempt at cloning
(def world @#'hello)
(defmethod world :b
[e] (assoc e :b 2))
(world {:type :b})
=> {:type :b :b 2}
;; I want this to throw... but because `hello` and `world`
;; are the same function, it still works
(hello {:type :b})
=> {:type :b :b 2}