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ó que serveix per definir una seqüència on:
Així doncs, la seqüència és .
Definiu ara una llista "infinita", anomenem-la seq-general, amb els elements de la seqüència 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)
Afegiu el codi 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)