1.背景
学习函数式编程也有一段时间了,首先发现学习这类的主题交叉的东西太多了,然后又发现追根溯源太耗时间和精力了。好想吃个什么羊草猪草就一下子通了任督二脉了,期望照进现实还是得埋头苦学呀。
前段学习后总结自己给了自己一个答案,就是自己还是太具体了,抽象层次不够。要学函数式编程,得把一个东西给搞透了,那就是眼里值(value)和函数(function)没有区别。于是就找到了这里Church encoding。加上前面说的Javascript也可以装B的文章,所以就来用Js来实现一些church encoding吧。
2.开始实现
a:邱奇数
//零
var zero=function(action){
return function(x){return x;};
}
//加一
var succ=function(n){
return function(action){
return function(x){
return action(n(action)(x));
};
};
}
//加法
var plus=function(m,n){
return function(action){
return function(x){
return m(action)(n(action)(x));
}
};
}
//乘法
var mult=function(m,n){
return function(action){
return function(x){
return m(n(action))(x);
};
};
}
//指数
var exp=function(m,n){
return function(action){
return function