Loops/Nested: Difference between revisions

Added Clojure.
(→‎{{header|Oz}}: improve documentation)
(Added Clojure.)
Line 126:
}
}</lang>
 
=={{header|Clojure}}==
We explicitly returns a status flag from the inner loop:
 
<lang clojure>(ns nested
(:import (java.util Random)))
(let [generator (Random.)]
(defn random-int [max]
"Random integer in [1, max]."
(inc (.nextInt generator max))))
 
(defn make-vec [n f]
"Calls f n times and returns the result as a vector."
(into [] (map (fn [_] (f)) (range 0 n))))
 
(defn create-matrix [width height]
(letfn [(create-row [] (make-vec width #(random-int 20)))]
(make-vec height create-row)))
 
(defn print-matrix [matrix]
(loop [[row & rs] matrix]
(condp = (loop [[x & xs] row]
(println x)
(if (= x 20)
:stop
(if xs
(recur xs)
:continue)))
:continue (when rs (recur rs))
:stop nil)))
 
(print-matrix (create-matrix 10 10))</lang>
 
=={{header|Common Lisp}}==
Anonymous user