sleep sort

(pmap #(do (Thread/sleep (* %1 1000)) (println %1)) '(5 1 3 6 2))

これだけ、なんだけどいまいちうまく表示してくれないなぁ。

と思ったら@omasanoriさんから。

(dorun (pmap #(do (Thread/sleep (* % 1000)) (println %)) [5 1 3 6 2]))

dorunなのね。ありがたや。

全然sleep sortと関係ないけど、手続的なloopの使い方のサンプル。
http://www.lunaticprogrammer.com/2009/05/clojure-parallel-execution-and-closures.html

;; Threading function sleeping for random time
(defn my-thread [thread-name]
  (loop [i 0]
    (when (< i 10)
      (println (format "thread %s: %s" thread-name (incr1)))
      (. java.lang.Thread sleep (.nextInt random 3000))
      (recur (inc i))))
)