Переполнение при использовании recur в clojure

У меня есть простой калькулятор простых чисел в clojure (неэффективный алгоритм, но я просто сейчас пытаюсь понять поведение повторения). Код:

(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)
)

Это работает, пока я не пытаюсь найти слишком много цифр. Например

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

работает. Для чего-либо, требующего больше рекурсии, я получаю ошибку переполнения.

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

не будет работать. В общем, то, что я использую recur или вызываю naive-primes снова без попытки TCO, не имеет никакого значения. Почему я получаю ошибки для больших рекурсий при использовании recur?

Ответы на вопрос(1)

Ваш ответ на вопрос