Thanks Meikel for the prompt reply, that does it. Please can you elaborate on how I can use the solution below to update a particular entry in the vector.
[{:id 1 :email {"a...@mail.com 1}} {:id 2 :email {"d...@mail.com 1}} {:id 3 :email {"g...@mail.com 2}}] So I will like to write a function that accepts an id and then updates the counter in email section of the given id. (defn update-counter [x xs] (dosync (alter result ...... Thanks again for your time. On Monday, June 3, 2013 9:23:47 PM UTC+1, Meikel Brandmeyer (kotarak) wrote: > > Hi, > > Am Montag, 3. Juni 2013 22:16:54 UTC+2 schrieb Yinka Erinle: >> >> Given I have the following >> (def result (ref [ { :id 1 :emails { "yi...@mail.com" 1}} ] ) ) >> >> I like to alter the result in a transaction to become >> [{:id 1 :emails { "yi...@mail.com" 2}}] ; increment the counter from >> 1 to 2 >> >> Please can someone provide pointers. >> >> > You can use the uniform update principle to stitch together alter and > update-in. > > (dosync > (alter result update-in [0 :emails "a@b.c"] inc)) > > Kind regards > Meikel > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.