Clojure's *map* is agnostic to whether the mapping function has side 
effects. The only thing to keep in mind is that *map* is not imperative, 
but declarative: it gives you a lazy sequence whose elements will be the 
results of the mapping function. As soon as you realize the sequence, for 
example by printing it, the side effects will appear.

On Thursday, December 27, 2012 9:04:20 AM UTC+1, Kruno Saho wrote:
>
> This code works:
>
>   (doseq [q @draw-queue]
>>     (draw-entity screen q))) 
>
>
> This code does not: 
>
> (map (fn [e] (draw-entity screen e)) @draw-queue)
>>
>
>  The difference here is that `map` produces no side effects, while `doseq` 
> expects side effects. In Common Lisp, `map` can take side effect creating 
> functions. I am interested why this is not the case in Clojure.
>
> Thank You.
>

-- 
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

Reply via email to