Clojureで特定の条件になるまで待つ

この例だと10秒待つ感じ。
if の条件を関数とかにして引数でもらうようにすれば大体のパターンに対応できる。

(defn wait-10sec []
  (loop [i 0]
    (if (< i 10)
      (do
        (Thread/sleep 1000)
        (println i)
        (recur (+ i 1))))))

これはなんかライブラリがありそうな気がするな。