summaryrefslogblamecommitdiffstats
path: root/net/ricketyspace/sicp/two/six.scm
blob: 62f6d1783e0486515240762a6b806d84c34029d4 (plain) (tree)






















                                                                     
;;;; Under Creative Commons Attribution-ShareAlike 4.0
;;;; International. See
;;;; <https://creativecommons.org/licenses/by-sa/4.0/>.

;;; Reference: http://enwp.org/?title=Church_encoding&oldid=849484371

(define-module (net ricketyspace sicp two six)
  #:export (zero
            add-1
            one
            two
            plus))

(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 (plus m n)
  (lambda (f) (lambda (x) ((m f) ((n f) x)))))