(setq true
(lambda (u)
(lambda (v)
u
)
)
)
(setq false
(lambda (u)
(lambda (v)
v
)
)
)
(setq myif
(lambda (cond)
(lambda (then)
(lambda (else)
(funcall (funcall cond then) else)
)
)
)
)
(funcall (funcall (funcall myif true) 'a ) 'b )
(funcall (funcall (funcall myif false) 'a ) 'b )
(setq zero (funcall (lambda (n)(lambda()n)) false) )
(setq one (funcall (lambda (n)(lambda()n)) true ) )
(setq incr (lambda (x ) (lambda () (funcall x) )))
(setq nature
(lambda (now )
(lambda (n)
(if (> n 1)
(funcall (funcall nature (funcall incr now) ) (- n 1) )
now
)
)
)
)
(setq iszero
(lambda (n)
(funcall n )
)
)
(funcall (funcall (funcall myif (funcall iszero (funcall (funcall nature zero ) 0))) 'a ) 'b )
(funcall (funcall (funcall myif (funcall iszero (funcall (funcall nature one ) 1))) 'a ) 'b )
(funcall (funcall (funcall myif (funcall iszero (funcall (funcall nature one ) 2))) 'a ) 'b )