JayX
JayX

Reputation: 1784

How do I implement foreach loop in clojure?

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

Answers (2)

Petrus Theron
Petrus Theron

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.

Example:

(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

amalloy
amalloy

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

Related Questions