ジェネレーターを自作する場合なんかに#<eof>を返したくなる場合がありますが、以外とググッても方法が出てきません。
R6RSの(eof-object)を使えば簡単に生成できます。
;; 1からnまでの数を返すgeneratorを返す (define (gen n) (define i 0) (^() (if (<= n i) (eof-object) (begin (inc! i) i)))) (define g (gen 2)) (g) ; => 1 (g) ; => 2 (g) ; => #<eof> (generator->list (gen 5)) ;; => (1 2 3 4 5)