Hi, On Oct 12, 4:34 am, gL <bike2r...@gmail.com> wrote:
> (use 'clojure.contrib.combinatorics) > > (defn run-euler-024 [] > (binding [max 0] > (let [perms (take 1000000 (lex-permutations [0 1 2 3 4 5 6 7 8 > 9]))] > (doseq [perm perms] > (set! max perm))) > max)) > > The solution only works with a var name that equals to a Clojure name > (here "max"). > > Changing "max" to "res" results in java.lang.Exception: Unable to > resolve var: res in this context If you feel to write code like this, then please remember reduce! Here some random example. (defn max "Returns the maximum of a sequence of natural numbers." [a-seq] (reduce (fn [max elem] (if (< max elem) elem max)) 0 a-seq)) Instead of the more imperative style like the following. (defn max "Returns the maximum of a sequence of natural numbers." [a-seq] (let [max (atom 0)] (doseq [elem a-seq] (when (< @max elem) (reset! max elem))) @max)) (This is in principle what you tried to achieve with your binding.) Ugh. Please don't write such code. Sincerely Meikel --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---