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

Reply via email to