JS中邱奇数0,1的表达式分别定义为:
var zero = function(f) {
return function(x) {
return x;
}
};
var one = function(f) {
return function(x) {
return f(x);
}
};
我们定义一个测试函数便于理解加法:
function test(value) {
return value + 1;
}
可以看出测试函数每运行一次,返回的值加一,例如:
当使用zero() 时,输入任何f,都会返回x,不会执行f。而当使用one()时,会返回f(x)。
加法的代码为
var add = function(m, n) {
return function(f) {
return function(x) {
return m(f)(n(f)(x));
}
}
}
以one add one 为例,m(f)(n(f)(x))即one(f)('r') r=one(f)(x),我们知道,one(f)(x)返回f(x),则该式其实就是f(f(x)),一个套娃函数。
那么我们就明白了,加法的实现方法就是函数的重复运行,3就是f(f(f(x))),5就是f(f(f(f(f(x)))))。