知乎上有一个回答非常好
http://www.zhihu.com/question/39930042
对于加法的实现,我的想法是先处理出m的结果,然后在用n去处理这个结果就是,n+m的结果。
(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))