Because unlike in CL, `map` in Clojure produces a lazy (and possibly infinite) sequence. If the mapping function is impure then laziness makes things harder to reason about.
If you want `map` like behaviour but don't want laziness, you can check out `mapv` which returns a vector instead of a lazy sequence and hence is not lazy. -BG On Thu, Dec 27, 2012 at 1:34 PM, Kruno Saho <[email protected]> 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 [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 -- Baishampayan Ghose b.ghose at gmail.com -- 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
