1.3.0 permalink Arrow_down_16x16

dotimes

clojure.core

  • (dotimes bindings & body)
bindings => name n

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

2 Examples top

  • user=> (dotimes [n 5] (println "n is" n))
    n is 0
    n is 1
    n is 2
    n is 3
    n is 4
    nil
  • user=> (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
Log in to add / edit an example.

See Also top

  • 0
    clojure.core/repeat

    Returns a lazy (infinite!, or length n if supplied) sequence of xs.

  • 0
    clojure.core/for

    List comprehension. Takes a vector of one or more binding-form/col

  • 0
    clojure.core/doseq

    Repeatedly executes body (presumably for side-effects) with binding

Log in to add a see also.

Plus_12x12 Minus_12x12 Source clojure/core.clj:2894 top

(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 dotimes
     (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)))))))
Vars in clojure.core/dotimes:
Used in 0 other vars

Comments top

No comments for dotimes. Log in to add a comment.