Back in 2007 (https://groups.google.com/forum/#!searchin/clojure/mapc/clojure/x0PDu_D6mP0/3A7CZe-ZDWAJ), Henk Boom raised the possibility of including in Clojure a function with syntax like map, but semantics more like Common Lisp's mapc (or Scheme's for-each, I believe). It works just like Clojure map, but applies the function to items in a sequence (sequences) only for side-effects. A sequence of results isn't generated, so there's no need for laziness. There was discussion, and at one point Rich Hickey seemed to say that he had added this kind of function, under the name 'scan'. It looks like scan was subsequently renamed to 'dorun' (http://clojure.org/old_news), but dorun doesn't do what mapc does. As far as I can tell, there is no such function at present in Clojure. Is that correct?
There are other ways to get the same functionality, and it's easy to define a simple version of mapc (or whatever it should be called). However, I like the map syntax, even for side-effects, and don't want to reinvent the wheel. Even for small sequences, in which producing a sequence as output isn't costly, using mapc tells readers of your code that you're iterating over the list solely for side-effects. (defn mapc [f coll] (doseq [x coll] (f x))) For example, creating a mutable vector using core.matrix: => (def a (zero-vector :ndarray 5)) #'popco.core.popco/a => a #<NDArray [0.0 0.0 0.0 0.0 0.0]> => (mapc #(mset! a % -1) [0 2 4]) nil => a #<NDArray [-1 0.0 -1 0.0 -1]> -- -- 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/groups/opt_out.