Qual é o termo correto para o seguinte padrão de programação funcional?

Eu ouvi isso referido como umcorrente, como umlista infinita, e às vezes até comosequência preguiçosa.

Qual é o termo correto para o seguinte padrão? (Código Clojure mostrado)

(def first$ first)

(defn second$ [str]
  (cond
    (empty? str) ()
    true ((first (rest str)))))

(defn stream-builder [next_ n]
  (cons n (cons (fn [] (stream-builder next_ (next_ n))) ())))

(defn stream [str n]
  (cond
    (= 0 n) ()
    true (cons (first$ str) (stream (second$ str) (- n 1)))))

(def odd 
  (stream-builder (fn [n] 
        (+ 2 n))1))

(println (stream odd 23))

> (1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45)

questionAnswers(2)

yourAnswerToTheQuestion