关于Homework03的Church numerals的代码

Church numerals是一个很有意思的问题,cs61a的homework03中的Q7就是跟Church numerals有关的。在做这道题的过程中,我首先自己写出了代码并且测试通过,然后找了下官方的答案,没想到官方的代码如此的简短,思考之后令人不得不拍手称赞。因此,此篇文章我将分三部分:第一部分贴出我自己的代码,第二部分贴出官方的代码,第三部分会简单比较下我写的代码与官方的代码,并就官方的代码中使用的lambda方法尝试进行解读,如有错误,敬请各位批评指正。

一、我自己写的代码

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: same as successor(zero)"""
    "*** YOUR CODE HERE ***"
    return lambda x: f(x)

def two(f):
    """Church numeral 2: same as successor(successor(zero))"""
    "*** YOUR CODE HERE ***"
    return lambda x: f(f(x))

three = successor(two)

def church_to_int(n):
    """Convert the Church numeral n to a Python integer."""
    "*** YOUR CODE HERE ***"
    i = 0
    temp = zero
    while n(lambda x: 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值