Hi all,
I am learning Clojure and would like to see if there is a better/more
concise/faster/more idiomatic/etc. way to create the age-index below.  My
version seems awfully roundabout. The basic concept is a toy database table
stored as a hashmap.  Each row has a row-id and and a vector of data [name,
age].  I then create an index on the age column.  The index should yield a
row-id for the given age value.  My code below works as designed, but I'd
like to see how the age-index could be improved.

Thanks for your insights.

Chad
------------ code begin ----------------
(use '[clojure.contrib.seq-utils :only (flatten)])

(def data {
           0 ["Fred" 30],
           1 ["Wilma" 26],
           2 ["Bam-bam" 2],
           3 ["Dino" 3]})

(def age-index
  (apply sorted-map
         (flatten (map #(list
                         (nth (val %) 1)
                         (key %))
                       data))))

(defn name-by-age [age]
  (first (data (age-index age))))

(println (name-by-age 26))
------------------ code end -------------------

Chad Harrington
chad.harring...@gmail.com

--~--~---------~--~----~------------~-------~--~----~
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