The logician Alonzo Church invented a system of representing non-negative integers entirely using functions. Here are the definitions of 0, and a function that returns 1 more than its argument:
def zero(f):
return lambda x: x
def successor(n):
return lambda f: lambda x: f(n(f)(x))
Solution:
def one(f):
return successor(zero)(f)
def two(f):
return successor(one)(f)
def add(m,n,f):
return lambda x: m(f)(n(f)(x))
def church_to_int(m,f,x):
tmp=zero
n=0
while tmp(f)(x)!=m(f)(x):
tmp=successor(tmp)
n=n+1
return n
Not so sure whether I can code like this.