У меня есть атомы на картах, что может быть хорошей идеей, а может и не быть, но дело в том, что мне нужно разыменовать атомы, чтобы я мог json-str карты, а json-str не может обрабатывать атомы, поэтому написал это:
(defn deatomize- [m]
(cond
(instance? clojure.lang.Atom m) #(deatomize- @m)
(map? m) (zipmap (keys m) (map #(trampoline deatomize- %) (vals m)))
:else m
)
)
(defn deatomize [m] (trampoline deatomize- m))
что, кажется, работает, но а) это хорошо, б) есть ли лучший способ?