]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex3_67.rkt
Solution to 4.30. Extremely enlightening!
[sicp.git] / src / sicp / ex3_67.rkt
1 #lang racket
2
3 (define (interleave s1 s2)
4   (if (stream-null? s1)
5       s2
6       (cons-stream (stream-car s1)
7                    (interleave s2 (stream-cdr s1)))))
8
9 (define (pairs s t)
10   (cons-stream
11    (list (stream-car s) (stream-car t))
12    (interleave (interleave
13                 (stream-map (lambda (x) (list (stream-car s) x))
14                             (stream-cdr t))
15                 (stream-map (lambda (y) (list y (stream-car t)))
16                             (stream-cdr s)))                
17                (pairs (stream-cdr s) (stream-cdr t)))))
18
19                               
20                
21
22