Chapter 3, Modularity, Objects, and State
Exercise 3.69
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(define (triples a b c)
(cons-stream
(list (stream-car a) (stream-car b) (stream-car c))
(interleave
(stream-map (lambda (pair)
(list (stream-car a) (car pair) (cadr pair)))
(stream-cdr (pairs b c)))
(triples (stream-cdr a) (stream-cdr b) (stream-cdr c)))))
(define py-triplets
(stream-filter (lambda (triple)
(= (+ (square (car triple))
(square (cadr triple)))
(square (caddr triple))))
(triples integers integers integers)))
Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1 ]=> (stream-ref py-triplets 0)
;Value: memo-proc
1 ]=>
;Value 4: (3 4 5)
1 ]=> (stream-ref py-triplets 1)
;Value 5: (6 8 10)
1 ]=> (stream-ref py-triplets 2)
;Value 6: (5 12 13)
1 ]=> (stream-ref py-triplets 3)
;Value 7: (9 12 15)
1 ]=> (stream-ref py-triplets 3)
;Value 7: (9 12 15)