Overflow mientras usa recur en clojure

Tengo una calculadora de números primos simple en clojure (un algoritmo ineficiente, pero solo estoy tratando de entender el comportamiento de recur por ahora). El código es:

(defn divisible [x,y] (= 0 (mod x y)))

(defn naive-primes [primes candidates] 
  (if (seq candidates)
      (recur  (conj primes (first candidates)) 
              (remove (fn [x] (divisible x (first candidates))) candidates))
      primes)
)

Esto funciona siempre que no esté tratando de encontrar demasiados números. Por ejempl

(print (sort (naive-primes [] (range 2 2000))))

trabajos. Para cualquier cosa que requiera más recursividad, recibo un error de desbordamiento.

    (print (sort (naive-primes [] (range 2 20000))))

no trabajará. En general, si uso recurrente o llamo a primos ingenuos nuevamente sin el intento de TCO no parece hacer ninguna diferencia. ¿Por qué recibo errores por grandes recursiones mientras uso recurrente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta