わかりづらいのでもうちょっとシンプルな例。
http://www.edu.cs.kobe-u.ac.jp/Enshu6/2000/scheme_web/lambda_exercise.html#2 からのコピペだが、
(define (infinite-enumerate n) (cons n
(lambda () (infinite-enumerate (+ n 1)))))
(define (head inf-list) (car inf-list))
(define (tail inf-list)
(let ((rest (cdr inf-list))) (rest)))
(define (nth-inf-list n inf-list)
(if (= n 0) (head inf-list)
(nth-inf-list (- n 1) (tail inf-list))))
はループ?