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

10 lines
310 B
Common Lisp

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