LISP的括号非常重要,括号打错,整个程序就错了。
(define (iterative-improve good-enough? improve)
(define (iter x)
(if (good-enough? x)
x
(iter (improve x))))
(lambda (guess) (iter guess)))
(define (sqrt x)
(define square
(lambda (a) (* a a)))
(define average
(lambda (a y) (/ (+ a y) 2.0)))
(define good-enough?
(lambda (guess)
(< (abs (- (square guess) x)) 0.001)))
(define improve
(lambda (guess)
(average guess (/ x guess))))
((iterative-improve good-enough? improve) 1.0))
(newline)
(display (sqrt 9))
(define tolerance 0.0001)
(define fixed-point
(lambda (f x)
(define good-enough?
(lambda (x)
(< (abs (- (f x) x)) tolerance)))
(define improve
(lambda (x)
(f x)))
((iterative-improve good-enough? improve) 1.0)))
(newline)
(display (fixed-point cos 1.0))