;;; -*-Scheme-*- ;;; ;;; from BYTE Feb. 88 page 208 (define (fixed-point f initial-value) (define epsilon 1.0e-10) (define (close-enough? v1 v2) (< (abs (- v1 v2)) epsilon)) (define (loop value) (let ((next-value (f value))) (if (close-enough? value next-value) next-value (loop next-value)))) (loop initial-value)) (define (average-damp f) (lambda (x) (average x (f x)))) (define (average x y) (/ (+ x y) 2)) (define (sqrt x) (fixed-point (average-damp (lambda (y) (/ x y))) 1)) (print (sqrt 2)) (print (sqrt 4))