SICP 习题2.6 丘奇计数

时间:2022-02-21 00:17:02

知乎上有一个回答非常好

http://www.zhihu.com/question/39930042

对于加法的实现,我的想法是先处理出m的结果,然后在用n去处理这个结果就是,n+m的结果。

;需要具现化f 和 x
(define inc (lambda (x) (+ x 1)))

(define zero (lambda (f) (lambda (x) x)))

(define one (lambda (f) (lambda (x) (f x))))

(define two (lambda (f) (lambda (x) (f (f x)))))

(newline)
(display ((zero inc) 0))
(newline)
(display ((one inc) 0))
(newline)
(display ((two inc) 0))


(define add-1 (lambda (n) (lambda (f) (lambda (x) (f ((n f) x))))))

(newline)
(display (((add-1 two) inc) 0))

(define add (lambda (n m) (lambda (f) (lambda (x) ((n f) ((m f) x) )))))

(newline)
(display (((add one two) inc) 0))