나는 SICP를 기반으로 한 코스를 온라인으로 사용하여 파이썬과 CS를 배우려고합니다. 나는 교회 숫자의 기초를 이해하지만 파이썬에서 람다 함수를 사용하여 교회 숫자를 추가하는 데 어려움을 겪고있다.파이썬에서 람다 함수를 사용하여 교회 숫자 추가하기
def add_church(m, n):
"""Return the Church numeral for m + n, for Church numerals m and n.
>>> three = successor(two)
>>> church_to_int(add_church(two, three))
5
"""
return lambda f: lambda x: m(f(x))(n(x))
나는 교회 숫자를 추가하는 방법가 될 것이라고 결론을 내렸다 : 이것은에 문제가 있어요 add_church 기능이
def zero(f):
return lambda x: x
def successor(n):
return lambda f: lambda x: f(n(f)(x))
def one(f):
"""Church numeral 1."""
return lambda x: f(x)
def two(f):
"""Church numeral 2."""
return lambda x: f(f(x))
def church_to_int(n):
"""Convert the Church numeral n to a Python integer.
>>> church_to_int(zero)
0
>>> church_to_int(one)
1
>>> church_to_int(two)
2
"""
return n(lambda x: x + 1)(0)
def mul_church(m, n):
"""Return the Church numeral for m * n, for Church numerals m and n.
>>> three = successor(two)
>>> four = successor(three)
>>> church_to_int(mul_church(two, three))
6
>>> church_to_int(mul_church(three, four))
12
"""
return lambda x: m(n(x))
:
이 아래에있는 내 코드 문맥입니다 어떻게 든 add_church (m, n)의 함수 중 하나를 입력으로 사용하거나 다른 함수의 "x"를 사용합니다. 그러나 함수 호출에서 올바른 인수를 사용하지 않는다는 의미의 오류가 계속 발생합니다. 내가 전화
예를 들어:
church_to_int(add_church(one, two))
나는 다른 사람의 사이에 "int 객체 호출 할 수 없습니다"오류 얻을 또한 성공없이 다른 여러 가지 방법을 시도했습니다.
나는 람다 함수가 add_church를 구현하는 데 문제가 있다는 것을 알지 못한다고 생각합니다. 나는 이것을 알아내는 데 얼마 동안 머물렀다. 그래서 나에게 답을 이끌어 줄 수있는 도움은 크게 감사 할 것이다.
함수를 사용한 예제는 실제로 통찰력이 있었고 람다 함수를 이해하는 데 많은 혼란을 겪었으며 매우 영리하다는 것을 알았습니다. 나는 사실 그것을 이해하기 위해 함수를 람다 (lambdas)로 번역하면서 놀려고합니다. 감사! – Andrew