Skip to content

Instantly share code, notes, and snippets.

@pi8027
Created August 25, 2013 15:22
Show Gist options
  • Save pi8027/6334409 to your computer and use it in GitHub Desktop.
Save pi8027/6334409 to your computer and use it in GitHub Desktop.
zero = lambda f: lambda x: x
succn = lambda n: lambda f: lambda x: f(n(f)(x))
true = lambda x: lambda y: x
false = lambda x: lambda y: y
negb = lambda b: lambda x: lambda y: b(y)(x)
iszero = lambda n: n(lambda x: false)(true)
predn = lambda n: n(lambda p: lambda f: f(p(false))(succn(p(false))))(lambda f: f(zero)(zero))(true)
subn = lambda n: lambda m: m(predn)(n)
leq = lambda n: lambda m: negb(iszero(subn(m)(n)))
modn = lambda n: lambda m: n(lambda n: leq(m)(n)(subn(n)(m))(n))(n)
int_of_nat = lambda n: n(lambda n: n+1)(0)
# def nat_of_int(i):
# n = zero
# for _ in range(i):
# n = succn(n)
# return n
print(int_of_nat(modn(lambda f: lambda x: f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(x))))))))))))))))(lambda f: lambda x: f(f(f(f(x))))))) # 15 % 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment