В следующем коде я пытаюсь понять, как переменная whatami
получает свое значение.Следуя логике, я вижу, что процедура (lambda (y) (/ x y))
является параметром, который я передаю методу average-damp
, и представлен в этом методе как переменная f
.Кажется, что (/ x y)
и (average (f whatami) whatami)
должны быть выполнены, но я не могу понять порядок выполнения.Любая помощь приветствуется.
(define (average x y)
(/ (+ x y) 2))
(define (fixed-point f start)
(define tolerance 0.00001)
(define (close-enuf? u v)
(< (abs (- u v)) tolerance))
(define (iter old new)
(if (close-enuf? old new)
new
(iter new (f new))))
(iter start (f start)))
(define average-damp
(lambda (f)
(lambda (whatami) (average (f whatami) whatami))))
; square root with average damping
(define (_sqrt x)
(fixed-point
(average-damp (lambda (y) (/ x y)))
1))
(_sqrt 4.0)