All pastes #768999 Raw Edit

Someone

public text v1 · immutable
·published 2007-11-11 01:12 UTC
rendered paste body
(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))))))