UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture15/ odds.rkt
#lang racket
(require racket/generator)

(define nats
  (generator ()
      (let ([n 0])
        (define (loop)
          (yield  n)
          (set! n (add1 n))
          (loop))
        (loop))))

(define odds
  (generator ()
      (define (odds-loop)
        (let ([n (nats)])
          (when (odd? n)
            (yield  n))
          (odds-loop)))
    (loop)))

(odds)  (odds)  (odds) (odds) (odds)