Augh, my eyes! Seriously though, you can save yourself some pain. If you're going to destructure in an anonymous function, just use (fn) instead of the now- actually-longhand #() shorthand form: (fn [[k v]] ...) vs #(let [[k v] %] ...) is clearer and doesn't stop you using another #() nested within or without.
Related advice, which I always forget when I'm writing my own code, is that you usually don't want to map an anonymous function; instead, use for: (for [[k v] my-seq] (do-stuff-with k v)) is clearer than (map (fn [[k v]] (do-stuff-with k v)) my-seq) On Feb 22, 3:27 pm, Nurullah Akkaya <nurul...@nakkaya.com> wrote: > You can use map to get your new sequence of pairs, the turn it into a > hash-map using into, > > (->> {:first "john" :last "smith" :age 25} > (map #(let [[k v] %] > (if (string? v) > [k (.toUpperCase v)] [k v]))) > (into {})) > > Best, > -- > Nurullah Akkayahttp://nakkaya.com > > On Tuesday, February 22, 2011 at 5:08 AM, yair wrote: > > I'm hoping this is a dumb question and I've missed something obvious. > > I have a map with various key-value pairs and I want to transform some > > of the values, e.g. > > > (def mymap {:first "john" :last "smith" :age 25}) and say I want to > > change the strings to be upper case. > > Right now all I can think of doing is using reduce and passing in an > > empty map and the re-associating each key with the (possibly) > > transformed value. Is there something like the map function that > > takes two parameters, one a function that receives a pair and returns > > a new pair, and the other a map, and returns a map that's > > reconstituted from those pairs? > > > Thanks > > > -- > > 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 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