Exercise 2.6
(define zero (lambda (f) (lambda (x) x)))
(define (add1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
(define one (lambda (f) (lambda (x) (f x))))
(define two (lambda (f) (lambda (x) (f (f x)))))
(define (add a b)
(lambda (f) (lambda (x) ((a f) ((b f) x)))))
(define (church->number n)
((n (lambda (x) (+ x 1))) 0))
(church->number zero) => 0
(church->number one) => 1
(church->number two) => 2
(church->number (add1 two)) => 3
(church->number (add one zero)) => 1
(church->number (add zero two)) => 2
(church->number (add one two)) => 3
(church->number (add two two)) => 4