UP | HOME

church number in racket

Start

(define (zero f x) x)
(define (suc n)
  (λ (f x)
    (f (n f x))))

(define (add n1 n2)
  (λ (f x)
    (n1 f (n2 f x))))

(define (λnum->number n)
  (n (λ (k) (add1 k)) 0))

Play with it

(λnum->number (suc zero))
(λnum->number (suc (suc (suc zero))))
(λnum->number (add (suc (suc (suc zero)))
		   (suc (suc zero))))

Date: 2022-01-19 Wed 00:00

Author: Lîm Tsú-thuàn