I was introduced to fmap by Haskell. Specifically, the (IMHO) most excellent "Learn You a Haskell for Great Good!" online tutorial. Highly recommended!
On Feb 22, 5:04 pm, rob levy <r.p.l...@gmail.com> wrote: > Yeah, fmap is perfect and definitely the most elegant for the specific > problem described by the OP. I had never heard of that one. > > > > > > > > On Tue, Feb 22, 2011 at 6:56 PM, Benny Tsai <benny.t...@gmail.com> wrote: > > There is fmap from clojure.contrib.generic.functor, which expects a > > function of arity 1, for just the value: > > > (use 'clojure.contrib.generic.functor) > > (require '[clojure.string :as str]) > > > (def my-map {:first "john" :last "smith" :age 25}) > > > (defn my-fn [value] > > (if (string? value) > > (str/upper-case value) > > value)) > > > user=> (fmap my-fn my-map) > > {:first "JOHN", :last "SMITH", :age 25} > > > On Feb 22, 4:23 pm, rob levy <r.p.l...@gmail.com> wrote: > > > The usual intuitive options for this are reduce, zipmap, or into. You > > can > > > also write a lazily recursive solution. I wonder why there's no function > > in > > > core that lazily re-constructs the map with the results of the function? > > It > > > seems to have been discussed on the list at least once or twice. It > > seems > > > like there would have to be two versions of it, one expecting a function > > > with an arity of one (for just the value) and another expecting an arity > > of > > > two (key and value). > > > > On Mon, Feb 21, 2011 at 10:08 PM, yair <yair....@gmail.com> 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 -- 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