Here is what I came up with. (let [d [#{#{1 2} #{3 4}} #{#{5 6} #{7 8}}]] (reduce (fn [mp nd] (apply merge (for [nd-pair nd face nd-pair] (update-in mp [face] #(conj % nd))))) {} d))
On Dec 3, 3:42 am, Sunil S Nandihalli <sunil.nandiha...@gmail.com> wrote: > Hello everybody, > I would like to know as to how I would write the following code in a > more idiomatic way. > > (let [mp (atom {}) > d [#{#{1 2} > #{3 4}} ;node1 > #{#{5 6} > #{7 8}} ;node2]] > (dorun (for [nd d nd-pair nd face nd-pair] > (swap! mp update-in [face] #(conj % nd)))) > @mp) > > ; if you consider that points 1 2 3 4 form the node node1 and 5 6 7 8 > form node2 > ;I would like a map in the opposite direction .. > ;i.e. I should be able to find out all the nodes of which 1 is part of and > ;that is what the above code is doing.. but would like to know as to what > ;would be a more idiomatic way of doing this. > > https://gist.github.com/726773 > > I don't like the fact that I am using atom and swap .. can anybody > suggest a better way to do it? > > Thanks, > Sunil. -- 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