Clojure — Seqüencia Lazy

Recordeu la definició circular de llistes "infinites" que vam veure a
classes de laboratori?

    (def naturals (lazy-seq (cons 0 (map inc naturals)))) 
    (def factorials (lazy-seq (cons 1N (map * factorials (iterate inc 1N)))))

Ara suposem que tenim una funció f que serveix per definir una seqüència
a₀, a₁, a₂… on:

a₀ = 1

a_(n + 1) = f(a_(n))

Així doncs, la seqüència és a₀, f(a₀), f(f(a₀)….

Definiu ara una llista "infinita", anomenem-la seq-general, amb els
elements de la seqüència a₀, a₁, a₂… fent servir aquesta tècnica de la
definició circular. És a dir, cal que definiu seq-general tal que la
seva definició tingui la forma:

(def seq-general ...transformació, que inclou f, de la mateixa llista
seq-general)

Observacions

Afegiu el codi (deffidentity) en el vostre codi per a que funcioni
l’enviament.

Informació del problema

Autoria: Jordi Delgado / Gerard Escudero

Generació: 2026-01-25T13:08:10.465Z

© Jutge.org, 2006–2026.
https://jutge.org
