store/[org.clojure/clojure "1.8.0"] clj::clojure.core/dotimes

Official Documentation

Add notes
Arities
==================================================
   [bindings & body]

Docstring
==================================================
  bindings => name n

  Repeatedly executes body (presumably for side-effects) with name
  bound to integers from 0 through n-1.

Source

(defmacro dotimes
  "bindings => name n

  Repeatedly executes body (presumably for side-effects) with name
  bound to integers from 0 through n-1."
  {:added "1.0"}
  [bindings & body]
  (assert-args
     (vector? bindings) "a vector for its binding"
     (= 2 (count bindings)) "exactly 2 forms in binding vector")
  (let [i (first bindings)
        n (second bindings)]
    `(let [n# (long ~n)]
       (loop [~i 0]
         (when (< ~i n#)
           ~@body
           (recur (unchecked-inc ~i)))))))

Example 1

Edit
(dotimes [n 5] (println "n is" n))
;; > n is 0
;; > n is 1
;; > n is 2
;; > n is 3
;; > n is 4
;; => nil

Example 2

Edit
(dotimes [n 10] (println (map #(* % (inc n)) (range 1 11))))
;; > (1 2 3 4 5 6 7 8 9 10)
;; > (2 4 6 8 10 12 14 16 18 20)
;; > (3 6 9 12 15 18 21 24 27 30)
;; > (4 8 12 16 20 24 28 32 36 40)
;; > (5 10 15 20 25 30 35 40 45 50)
;; > (6 12 18 24 30 36 42 48 54 60)
;; > (7 14 21 28 35 42 49 56 63 70)
;; > (8 16 24 32 40 48 56 64 72 80)
;; > (9 18 27 36 45 54 63 72 81 90)
;; > (10 20 30 40 50 60 70 80 90 100)
;; => nil

Uses on crossclj