diff --git a/src/lambda-calculus.js b/src/lambda-calculus.js index aa117e6..926541a 100644 --- a/src/lambda-calculus.js +++ b/src/lambda-calculus.js @@ -133,7 +133,9 @@ export function fromInt(n) { export function toInt(term) { try { if ( config.numEncoding === "Church" ) { - return term ( x => x+1 ) ( Primitive(0) ); + const succ = x => x+1 ; + const result = term ( succ ) ; + return result ( result === succ ? 0 : Primitive(0) ); } else if ( config.numEncoding === "Scott" ) { let result = 0, evaluating = true; while ( evaluating ) diff --git a/tests/basics-church/test.js b/tests/basics-church/test.js index 4207276..8ff1b8d 100644 --- a/tests/basics-church/test.js +++ b/tests/basics-church/test.js @@ -36,5 +36,6 @@ describe("Church tests",function(){ assert.equal( times(1e2)(1e1), 1e3 ); assert.equal( pow(10)(3), 1e3 ); assert.equal( pred(pow(10)(3)), 1e3-1 ); + assert.equal( pow(0)(0), 1); }); });