(define powers-of-2 (let ((current 1)) (lambda () (let ((val current)) (set! current (* 2 current)) val)))) (define (make-power-stream n) (let ((current 1)) (lambda () (let ((val current)) (set! current (* n current)) val)))) (define current-2 (make-power-stream 2)) (define current-3 (make-power-stream 3)) (define powers-of-2-3 (let ((val2 (current-2)) (val3 (current-3)) (val 1)) (lambda () (cond ((= val2 val3) (begin (set! val2 (current-2)) (set! val3 (current-3)) val)) ((> val2 val3) (begin (set! val val3) (set! val3 (current-3)) val)) ((< val2 val3) (begin (set! val val2) (set! val2 (current-2)) val))))))