SICP Exercise 1.46
(define (iterative-improve good-enough? improve)
(lambda (x)
(define (iter n)
(if (good-enough? n)
n
(iter (improve n))))
(iter x)))
(define (good-enough? x y)
(< (abs (- x y) 0.0001)))
(define (sqrt x)
((iterative-improve
(lambda (y)
(< (abs (- (square y) x))
0.0001))
(lambda (y)
(average y (/ x y))))
1.0))