function to efficiently check a change of value in a nested hashmap
Posted
by
zcaudate
on Stack Overflow
See other posts from Stack Overflow
or by zcaudate
Published on 2012-12-04T06:21:02Z
Indexed on
2012/12/04
11:08 UTC
Read the original article
Hit count: 190
clojure
the motivation is for checking what has changed in a deeply nest map, kind of like a reverse of update-in
.
This is a simple example:
(def p1 {:a {:a1 :1 :a2 :2}
:b {:b1 :1 :b2 :2}})
(def p2 (update-in p1 [:a :a1] (constantly :updated))
;; => {:a {:a1 :updated :a2 :2}
;; :b {:b1 :1 :b2 :2}}
(what-changed? p1 p2)
;; => {:keys [:a :a1] :value :updated)
(what-changed? p2 p1)
;; => {:keys [:a :a1] :value :2)
I'm hoping that because clojure maps are persistent data-structures, there may be a smart algorithm to figure this out by looking at the underlying structure as opposed to walking through the nested maps and comparing the difference.
© Stack Overflow or respective owner