程序抽象
定义计算模式 - lambda 表达式
> (lambda (x) (* x x))
#<procedure>> ((lambda (x) (* x x)) 5) ; evaluated as (* 5 5)
25> (define square (lambda (x) (* x x)))
> (square 5)
25lambda 表达式与程序抽象
Last updated
> (lambda (x) (* x x))
#<procedure>> ((lambda (x) (* x x)) 5) ; evaluated as (* 5 5)
25> (define square (lambda (x) (* x x)))
> (square 5)
25Last updated
; 利用勾股定理计算直角三角形斜边的长度
> (define square (lambda (x) (* x x)))
> (define sum-squares
(lambda (x y) (+ (square x) (square y))))
> (define pythagoras
(lambda (y x) (sqrt (sum-squares y x))))> (define squre
(lambda (x) (* x x)))
> (define close-enuf?
(lambda (guess x)
(< (abs (- (square guess) x)) 0.001)))> (define average
(lambda (a b) (/ (+ a b) 2)))
> (define improve
(lambda (guess x)
(average guess (/ x guess))))> (define sqrt-loop (lambda G X)
(if (close-enuf? G X)
G
(sqrt-loop (improve G X) X)))
> (define sqrt
(lambda (x)
(sqrt-loop 1.0 x)))