console.log('Lambda calculus with ES6 syntax'); console.log( // (\(x,y).x+y)(1,2) => 1+2 => 3 ((x, y) => x + y) (1, 2) ); console.log( // ((\x.\y.x+y) 1) 2 => (\y.1+y) 2 => 3 (x => y => x + y) (1) (2) ); console.log( // (\x.x 1) => fn (N->A) -> B (x => x(1)) ); console.log( // (\x.(\y.x y)) => fn (A->B) -> (B->A) (x => y => x(y)) ); console.log( // (\x.x 1) (\x.x+1) => (\x.x+1) 1 => 1+1 => 2 (x => x(1)) (x => x+1) ); console.log( // (\x.(\y.x y)) (\x.x+1) 2 => (\y.(\x.x+1) y) 2 => (\x.x+1) 2 => 2+1 => 3 (x => y => x(y)) (x => x+1) (2) );