Open leozp opened 4 years ago
def _0(s,z): return z def _1(s,z): return s(z) def _2(s,z): return s(s(z)) def _3(s,z): return s(s(s(z))) _4 = lambda s,z:s(s(s(s(z)))) _5 = lambda s,z:s(s(s(s(s(z))))) _6 = lambda s,z:s(s(s(s(s(s(z)))))) _7 = lambda s,z:s(s(s(s(s(s(s(z))))))) _8 = lambda s,z:s(s(s(s(s(s(s(s(z)))))))) _9 = lambda s,z:s(s(s(s(s(s(s(s(s(z))))))))) #add = lambda x,y:lambda s,z:x(s,y(s,z)) def add(x,y): def curry0(s,z): return x(s,y(s,z)) return curry0
定义的都是函数,没有值推导不会产生作用
z = 0 s = lambda x:x+1 print("_2 :",_2(s,z)) print("_3 :",_3(s,z)) print("_5 :",_5(s,z)) print("add(_2,_3):",add(_2, _3)(s,z))
给数字赋予新的意义 我们也可以用字符”+”的个数来代替我们定义的数字
z="" s= lambda x:x+"+" print("_2 :",_2(s,z)) print("_3 :",_3(s,z)) print("_5 :",_5(s,z)) print("add(_2,_3):",add(_2, _3)(s,z))
原文 https://jijing.site/sicp/lambda_02_number.html
数字定义
定义的都是函数,没有值推导不会产生作用
给数字赋予新的意义 我们也可以用字符”+”的个数来代替我们定义的数字