#lang racket
(require racket/generator)
(define nats
(generator ()
(let ([n 0])
(define (nat-loop)
(yield n)
(set! n (add1 n))
(cons (nat-loop) empty))
(nat-loop))))
(nats) (nats) (nats) (nats) (nats) (nats)