1 (defun iterative-improve (good-enough? improve)
3 (labels ((improve-iter (guess)
4 (let ((improved-guess (funcall improve guess)))
5 (if (funcall good-enough? guess improved-guess)
7 (improve-iter improved-guess)))))
8 (improve-iter first-guess))))
9 (defun improved-sqrt (num)
10 (funcall (iterative-improve
12 (let ((ratio (/ x y)))
13 (and (< ratio 1.001) (> ratio 0.999))))
15 (average guess (/ num guess))))
17 (defvar *tolerance* 0.00001)
18 (defun improved-fixed-point (f first-guess)
19 (funcall (iterative-improve
21 (< (abs (- x y)) *tolerance*))