]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex3_81.rkt
Solution to 4.33. This had been difficult to get right, though conceptually it was
[sicp.git] / src / sicp / ex3_81.rkt
1 #lang racket
2
3 (define (rand-seq init req-stream)
4   (let ((req (stream-car req-stream)))
5     (cond ((eq? req 'reset)
6            (let ((new-init (stream-car (stream-cdr req-stream))))
7              (let ((new-rand-val (rand-update new-init)))
8                (cons-stream
9                 new-rand-val
10                 (rand-seq new-rand-val 
11                           (stream-cdr (stream-cdr req-stream)))))))
12           ((eq? req 'generate)
13            (let ((new-val (rand-update init)))
14              (cons-stream 
15               new-val
16               (rand-seq new-val (stream-cdr req-stream))))))))
17