ex 1.42
(define (compose f g)
(lambda (x) (f (g x))))
((compose square inc) 6) ;; => 49
ex 1.43
(define (repeated f i)
(define (iter g n)
(if (= n 1)
g
(iter (compose g f) (- n 1))))
(iter f i))
((repeated inc 10) 0) ;; => 10
((repeated square 2) 5) ;; => (square (square 5)) => 625
ex 1.44
(define (smooth f)
(lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3)))
(define (smooth-n f n)
((repeated smooth n) f))
ex 1.45
(define (cube-root x)
(fixed-point (average-damp (lambda (y) (/ x (square y)))) 1.0))
;; (cube-root 27)
(define (4th-root x)
(fixed-point (average-damp (lambda (y) (/ x (* y y y)))) 1.0))
;; (4th-root 16) => infinite loop
;; y -> x/y^(n-1) 은 몇번 average-damp 해야 하는지 실험하기
(define (nth-root x n)
(fixed-point ((repeated average-damp n) (lambda (y) (/ x (expt y (- n 1)))))
1.0))
;; 실험 결과.. 패턴이 안보인다
;; n = 4 > 2
;; n = 5 > 2
;; n = 13 > 3
;; n = 22 > 2