Se a única construção de loop que não consome pilha no Clojure é "recorrente", como esse lazy-seq funciona?
A página ClojureDocs paralazy-seq
dá um exemplo de gerar uma preguiçosa-seq de todos os números positivos:
(defn positive-numbers
([] (positive-numbers 1))
([n] (cons n (lazy-seq (positive-numbers (inc n))))))
Esse lazy-seq pode ser avaliado para índices muito grandes sem gerar um StackOverflowError (diferente do exemplo de peneira na mesma página):
user=> (nth (positive-numbers) 99999999)
100000000
E sesórecur
pode ser usado para evitar o consumo de quadros de pilha em uma função recursiva, como é possível que esse exemplo preguiçoso-seq possa aparentemente se chamar sem sobrecarregar a pilha?