Practice 3.63
1
(define (sqrt-stream x)
(define guesses
(cons-stream 1.0
(stream-map (lambda (guess)
(sqrt-improve guess x))
guesses)))
guesses)
2
(define (sqrt-stream x)
(cons-stream 1.0
(stream-map (lambda (guess)
(sqrt-improve guess x))
(sqrt-stream x))))
版本2在每次访问下一个元素的时候stream-map过程使用的流是重新创建的流,而版本1的使用的是已有的流, 所以重复创建新的相同的流都是多余的操作. 如果delay不做优化,即使使用的是现有的流,每次访问元素都会重新计算,这两个过程就没差别了.