Home > Uncategorized > Church计数和Lambda演算——不用“数”的自然数运算

Church计数和Lambda演算——不用“数”的自然数运算

参考:http://shellex.info/church-nurmal-and-lambda-calculus/

  1. var zero = function(f){
  2.     return function(x){return x};
  3. }
  4.  
  5. var one = function(f){
  6.     return function(x){return f(x)};
  7. }
  8.  
  9. var two = function(f){
  10.     return function(x){return f(f(x))};
  11. }
  12.  
  13. var add = function(n, m){
  14.     return function(f){
  15.         return function(x){
  16.             return n(f)(m(f)(x));
  17.         }
  18.     }
  19. }

如果要翻译回普通“自然数”,可以用下面的

  1. var inc = function(x){
  2.     return x?++x:1;
  3. }
  4. alert(add(two,add(two,one))(inc)());

这个加法是没有用迭代和效率问题的(当然“翻译”的时候需要),另外把inc的++改成 –,就翻译成“减法”了

月影 Uncategorized

  1. No comments yet.