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))