I like to try and keep my level of nesting under control, and this often involves hiding or re-structuring the let macro. The for macro can implicitly assemble a let macro for you, but with a limitation that the :let clause can't be first:
1:5 user=> (for [:let [z [:foo :bar]] x z] (name x)) java.lang.IllegalStateException: Can't pop empty vector (repl-1:5) 1:6 user=> (for [x [:foo :bar] :let [z (name x)]] z) ("foo" "bar") 1:7 user=> Is this limitation intentional? Could the error message be improved? Here's what I wanted to write: (defn add-script-links-for-imported-javascript-libraries [env dom-nodes] (extend-dom dom-nodes [:html :head] :top (template-for [:let [aggregation (-> env :cascade :resource-aggregation) libraries (@aggregation :libraries)] asset-map libraries :let [path (to-asset-path env asset-map)]] :script { :type "text/javascript" :src path } [ linebreak ]))) (the formatting is probably scrambled) But I had to juggle it to this: (defn add-script-links-for-imported-javascript-libraries [env dom-nodes] (let [aggregation (-> env :cascade :resource-aggregation) libraries (@aggregation :libraries)] (extend-dom dom-nodes [:html :head] :top (template-for [asset-map libraries :let [path (to-asset-path env asset-map)]] :script { :type "text/javascript" :src path } [ linebreak ])))) Of course there are any number of ways to write this, but I prefer the first option, as it does less of a job of obscuring what the main point of the function is: a call to extend-dom. -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.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 -~----------~----~----~----~------~----~------~--~---