2015/11/06
SICP 問題 3.06
;; オリジナルのrand
(define rand (let ((x random-init))
(lambda ()
(set! x (rand-update x))
x)))
;; 'generateで乱数生成,'resetで引数の数字で初期化するrand
(define rand
(let ((x random-init))
(define (reset new-rand)
(set! x new-rand)
x)
(define (generate)
(set! x (rand-update x)))
(define (dispatch m)
(cond ((eq? m 'reset)
reset)
((eq? m 'generate)
(generate))
(else
(error "Unknown argument -- RAND" (list m)))))
dispatch))