What's wrong with this clojure prime seq?
===

I can't figure out why this definition of a lazy primes sequence would cause non-termination.  The stack-trace I get isn't very helpful (my one complaint about clojure is obtuse stack-traces).

    (declare naturals is-prime? primes)
    
    (defn naturals
      ([] (naturals 1))
      ([n] (lazy-seq (cons n (naturals (inc n))))))
    
    (defn is-prime? [n]
      (not-any? #(zero? (rem n %))
                    (take-while #(> n (* % %)) (primes))))
    
    (defn primes
      ([] (lazy-seq (cons 2 (primes 3))))
      ([n] (let [m (first (filter is-prime? (naturals n)))]
             (lazy-seq (cons m (primes (+ 2 m)))))))

    (take 10 (primes)) ; this results in a stack overflow error