控制流 / 循环

;; Clojure has no C-style "for": a counter comes from a range
(def sum10 (reduce + (range 1 11)))
;; sum10 is 55
(println "sum10 is" sum10)

;; dotimes repeats a body N times, for its side effects only
(dotimes [i 3]
  (println "step" i))

;; careful: "for" in Clojure is NOT a loop but a list comprehension —
;; it builds a lazy sequence and returns it
(println "squares are" (for [i (range 1 6)] (* i i)))

(println "(range 5) is" (range 5))
(println "(range 1 6) is" (range 1 6))
(println "(range 0 7 2) is" (range 0 7 2))