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.

Reply via email to