(define zero (lambda (f) (lambda (x) x)))
(define (add-1 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 (church-plus a b)
((a (lambda (n) (lambda (f) (lambda (x) (f ((n f) x)))))) b))
(define (church->integer a)
((a add-1) 0))
(display (church->integer zero))
KGRlZmluZSB6ZXJvIChsYW1iZGEgKGYpIChsYW1iZGEgKHgpIHgpKSkKKGRlZmluZSAoYWRkLTEgbikKICAobGFtYmRhIChmKSAobGFtYmRhICh4KSAoZiAoKG4gZikgeCkpKSkpCgooZGVmaW5lIG9uZQogIChsYW1iZGEgKGYpIChsYW1iZGEgKHgpIChmIHgpKSkpCgooZGVmaW5lIHR3bwogIChsYW1iZGEgKGYpIChsYW1iZGEgKHgpIChmIChmIHgpKSkpKQoKKGRlZmluZSAoY2h1cmNoLXBsdXMgYSBiKQogICgoYSAobGFtYmRhIChuKSAobGFtYmRhIChmKSAobGFtYmRhICh4KSAoZiAoKG4gZikgeCkpKSkpKSBiKSkKCihkZWZpbmUgKGNodXJjaC0+aW50ZWdlciBhKQogICgoYSBhZGQtMSkgMCkpCgooZGlzcGxheSAoY2h1cmNoLT5pbnRlZ2VyIHplcm8pKQ==