Recordeu la definició circular de llistes "infinites" que vam veure a classes de laboratori?
Ara suposem que tenim una funció f que serveix per definir una seqüència a0, a1, a2… on:
a0 = 1
an+1 = f(an)
Així doncs, la seqüència és a0, f(a0), f(f(a0)….
Definiu ara una llista "infinita", anomenem-la seq-general, amb els elements de la seqüència a0, a1, a2… 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 (def f identity) en el vostre codi per a que funcioni l’enviament.
Input
(def f inc) (take 5 seq-general)
Output
#'user/f (1 2 3 4 5)