Clojure расширяет ассоциативную артерию

Мне нужно реализовать пользовательскую ассоциацию, но она не работает с несколькими аргументами. Обрабатывает только первую пару. Кажется, что он вызывает ассоциацию напрямую, а не через базовую ассоциацию, а затем RT/ ассоциацию.

(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

Как это сделать для поддержки множественности?

1 ответ

Решение

println возвращает ноль Итак, верните оригинальное значение:

(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
Другие вопросы по тегам