Lambda calculus: Scott encoding
Mogensen-Scott encoding https://en.wikipedia.org/wiki/Mogensen-Scott_encoding
Natural numbers
ZERO = 0 := λab.a SUCC := λnxf.fn CASE := λnaf.naf
PRED := λn.n(0)(λx.x)
CASE is for pattern matching caseN
(case)(n)(a)(f) returns: a if n = 0 f(x) if n = succ(x)
With pattern matching, we can define predecessor function:
PRED := λn.caseN n Z (λn'.n')
0 := λzs.z 1 := λzs.s(0) 2 := λzs.s(1) 3 := λzs.s(2)
Last updated
Was this helpful?