2014-07-08 16:55 GMT+02:00 John Gabriele <jmg3...@gmail.com>: > On Tuesday, July 8, 2014 9:40:54 AM UTC-4, Cecil Westerhof wrote: >> >> In Clojure you can define a local constant with let, but I need a >> variable (I think). >> >> I want to do the following. I have a function that checks several things. >> Every time an error is found I want to set the variable errors to: >> (concat errors new-error) >> >> Is this possible? Or is there a better way to do this? >> >> > You *could* do something like: > > ~~~ > (let [errors (atom []) > ... > (swap! errors conj "error-X") > ...) > ~~~ >
I al-ready tried something along those lines: (defn error-in-datastruct-p [] (let [errors (atom ())] (if (= (count objects) (count *object-locations*)) (map (fn [x] (println x) (if (not (*object-locations* x)) (do (println x) (swap! errors conj (remove-symbol-from-output `(No location for ~x))) @errors ) )) objects) (swap! errors conj '(Number of objects and number of object locations is not the same.))) @errors)) (error-in-datastruct-p) This gives: user=> user=> () When I only remove the last @errors, I get: user=> user=> (whiskey bucket nil chain nil frog nil pole pole nil ((No location for pole))) What could be happening here? The variables are defined with: (def objects '(whiskey bucket chain frog pole)) (def ^:dynamic *object-locations* { 'whiskey 'living-room 'bucket 'living-room 'chain 'garden 'frog 'garden 'dummy 'nowhere }) And I am using clojure 1.6.0. By the way when changing *object-locations* to: (def ^:dynamic *object-locations* { 'whiskey 'living-room 'bucket 'living-room 'chain 'garden 'frog 'garden }) There is no problem, then I get the expected: user=> user=> ((Number of objects and number of object locations is not the same.)) -- Cecil Westerhof -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.