Reputation: 1784
Implementing a for loop in clojure seems to be easy, but how can I implement a foreach statement that reads each element in the list(vector) and does something?
like this...
(foreach i list expression)
Thanks in advance!
Upvotes: 24
Views: 6066
Reputation: 28807
map
is the functional equivalent of foreach
, whereas doseq
is for imperative programming with side-effects.
map
takes a function f
and a seqable collection coll
and returns the lazily-evaluated result of applying f
to each element in the collection.
(map inc [1 2 3 4])
=> (2 3 4 5)
(map (fn [x] (* x 2)) [1 2 3 4])
=> (2 4 6 8)
(map dec (take 5 (range)))
=> (-1 0 1 2 3)
Upvotes: 0
Reputation: 91857
Just replace for
with doseq
and you're all set. Don't use map
, which is just as lazy as for
.
Upvotes: 32