RosettaCodeData/Task/Church-numerals/Common-Lisp/church-numerals-7.lisp
2023-09-16 17:28:03 -07:00

18 lines
432 B
Common Lisp

(defun pred (n)
(flet ((value (v) (lambda (h) (funcall h v)))
(extract (k) (funcall k (lambda (u) u))))
(lambda (f)
(lambda (x)
(let ((inc (lambda (g) (value (funcall g f))))
(const (lambda (u) x)))
(extract (funcall (funcall n inc) const)))))))
(defun minus (m n)
(funcall (funcall n #'pred) m))
...
(defun is-zero (n)
(funcall (funcall n (lambda (x) false)) true))
...