SICP問題3.6
テスト用のrand-update。超てきとー。
(define (rand-update x) (+ x 1))
randの定義
(define rand (let ((x 1)) (define (reset m) (set! x m)) (define (generate) (begin (set! x (rand-update x)) x)) (define (dispatch m) (cond ((eq? m 'reset) reset) ((eq? m 'generate) (generate)) (else (error "Unknown request -- RAND" m)))) dispatch))
テスト
((rand 'reset) 2) ; 2 (rand 'generate) ; 3 (rand 'generate) ; 4 ((rand 'reset) 10) ; 10 (rand 'generate) ; 11
OK