SICP Practice

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不做优化,即使使用的是现有的流,每次访问元素都会重新计算,这两个过程就没差别了.