tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

church-2.js (490B)


      1 // Church-Peano integers
      2 
      3 var Zero = f => x => x;
      4 var Succ = n => f => x => n(f)(f(x));
      5 var Add = a => b => f => x => a(f)(b(f)(x));
      6 var Mul = a => b => f => x => a(b(f))(x);
      7 var Exp = a => b => b(a);
      8 
      9 var n = f => f(k => k + 1)(0);
     10 
     11 assertEq(n(Zero), 0);
     12 assertEq(n(Succ(Zero)), 1);
     13 assertEq(n(Succ(Succ(Zero))), 2);
     14 
     15 var Three = Succ(Succ(Succ(Zero)));
     16 var Five = Succ(Succ(Three));
     17 assertEq(n(Add(Three)(Five)), 8);
     18 assertEq(n(Mul(Three)(Five)), 15);
     19 assertEq(n(Exp(Three)(Five)), 243);