Hello folks,

I'm working on some sample code and I have a feeling that there is an
easier/more succinct way to code this.  Any help or RTFM with a link
is appreciated.

Given:

(def cookbook {:Coffee          {:coffee 3, :sugar 1, :cream 1},
               :Decaf-Coffee    {:decaf 3, :sugar 1, :cream 1},
               :Caffe-Late      {:espresso 2, :steamed-milk 1},
               :Caffe-Americano {:espresso 3},
               :Caffe-Moca      {:espresso 1, :coco 1, :steamed-milk
1, :cream 1},
               :Cappuccino      {:espresso 2, :steamed-milk 1, :foamed-milk
1} })

(def cost {:coffee        0.75,
           :decaf         0.75,
           :sugar         0.25,
           :cream         0.25,
           :steamed-milk  0.35,
           :foamed-milk   0.35,
           :espresso      1.00,
           :cocoa         0.90,
           :whipped-cream 1.00 })

(def menu {:Coffee          1,
           :Decaf-Coffee    2,
           :Caffe-Late      3,
           :Caffe-Americano 4,
           :Caffe-Moca      5,
           :Cappuccino      6 })

I'm trying to write a function to print out the menu listing the cost
of each drink.  It works (sort of) but I keep thinking there is an
easier way.

(defn print-menu [menu]
  (do
    (println "Menu:")
    (doseq [[drink number] menu]
      (println (str number ", " (drink-name drink) ", "
                    (reduce +
                            (map (fn [map-entry] (* (cost (key map-entry) (val 
map-
entry)))) (cookbook drink))))))))

Specifically this part:
(map (fn [map-entry] (* (cost (key map-entry) (val map-entry))))
(cookbook drink))

Is there a way I can get at the map key and value using destructuring
without knowing what the key is ahead of time?

Thanks,
Daniel

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