Sorry for posting to an older discussion, but I recently came across this issue as well. After evaluating zippers and code walking I decided instead to implement my own protocol to solve the issue.
I'm using re-frame along with sente. I've structured my application so data only enters the front-end app-db initially from a single function. As such I am pre-processing data as it enters app-db to make it easier to index. So far I have been appending information to the meta data of my data structures so that I don't have to strip unnecessary identifiers when I push changes to the server. This allows me to call (update-by-elem collection element-to-be-changed function-to-change-it) from a handler. The code is very rough and still has a ton of issues, but it may be of use to anyone still struggling with this issue: https://gist.github.com/KeeganMyers/311fc4fa80222a693d18 example use: (def test1 (add-meta-id [1 2 3 [4 5 6]])) (update-by-elem test1 (last test1) (fn [coll2] (map dec coll2))) (def test2 (add-meta-id {:test1 "value" :test2 {:test3 "value3"}})) (update-by-elem test2 (:test2 test2) (fn [coll2] (assoc coll2 :test2 "val4"))) (def test3 (add-meta-id #{1 2 3 #{1 2 3}})) (update-by-elem test3 (last test3) (fn [coll2] (map inc coll2))) -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript.