Clojure 扩展关联性

Clojure extend Assotiative arity

我需要实现自定义关联,但它不适用于多个参数。它只处理第一对。它似乎直接调用 assoc,而不是通过 core assoc 然后 RT/assoc.

(def my-assoc (reify
                clojure.lang.Associative
                  (assoc [_ k v]
                    (println "assoc!!" k v))))

(assoc my-assoc :a 2 :b 3) ;; prints only :a 2

支持多元性应该怎么做?

println return无。所以return原值:

(def my-assoc (reify
                clojure.lang.Associative
                (assoc [m k v]
                  (println "assoc!!" k v)
                  m)))

(assoc my-assoc :a 2 :b 3) ;; prints both