;;; -*-Scheme-*-

(define (sqrt x)
    (define (good-enough? guess)
	(< (abs (- (square guess) x)) 0.001))
    (define (improve guess)
	(average guess (/ x guess)))
    (define (sqrt-iter guess)
	(if (good-enough? guess)
	    guess
	    (sqrt-iter (improve guess))))
    (sqrt-iter 1))

(define (square x) (* x x))
(define (average x y) (/ (+ x y) 2))
(define (abs x) (if (negative? x) (- x) x))

(print (sqrt 2))
(print (sqrt 4))