#lang racket
(require racket/generator)
(define g
(generator ()
(define (loop lst)
(if (empty? lst) #f
(begin
(yield (first lst))
(loop (rest lst)))))
(loop '(a b c))))
(g) (g) (g) (g) (g)