HW--Church numerals
1150 ワード
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:
This representation is known as
Church numerals
. Define
one
and
two
directly, which are also functions. To get started, apply
successor
to
zero
. Then, give a direct definition of the
add
function (not in terms of repeated application of
successor
) over Church numerals. Finally, implement a function
church_to_int
that converts a church numeral argument to a regular Python int.
Solution:
Not so sure whether I can code like this.
def zero(f):
return lambda x: x
def successor(n):
return lambda f: lambda x: f(n(f)(x))
This representation is known as
Church numerals
. Define
one
and
two
directly, which are also functions. To get started, apply
successor
to
zero
. Then, give a direct definition of the
add
function (not in terms of repeated application of
successor
) over Church numerals. Finally, implement a function
church_to_int
that converts a church numeral argument to a regular Python int.
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.