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

Reply via email to