2014-07-08 18:14 GMT+02:00 John Gabriele <[email protected]>:
> On Tuesday, July 8, 2014 11:38:42 AM UTC-4, Cecil Westerhof wrote:
>>
>>
>>
>>
>> 2014-07-08 16:55 GMT+02:00 John Gabriele <[email protected]>:
>>
>> 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))
>>
>>
> `map` is for creating seqs (and lazy ones at that); it's not for
> side-effects. If you want side-effects, try `doseq`.
>
That was the problem. I know have:
(defn error-in-datastruct-p []
(let [errors (atom ())]
(if (= (count objects) (count *object-locations*))
(doseq [obj objects]
(if (not (*object-locations* obj))
(swap! errors conj (remove-symbol-from-output `(No
location for ~obj)))))
(swap! errors conj '(Number of objects and number of object
locations is not the same.)))
(reverse @errors)))
And that works.
> Also, just a matter of style, but it's customary to leave closing parens
> at the end of a line, rather than by themselves on their own line.
>
I do that also, but when I am editing I put them on there own line,
because in this way changes are faster. When I am satisfied, I merge them.
;-)
By the way I would like to put a point after the message, like:
(swap! errors conj (remove-symbol-from-output `(No location for
~obj.)))))
But that gives:
CompilerException java.lang.ClassNotFoundException: obj.,
compiling:(NO_SOURCE_PATH:124:42)
Is there a way to get the point behind the line?
--
Cecil Westerhof
--
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
---
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 [email protected].
For more options, visit https://groups.google.com/d/optout.