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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en