example2.js
var tco = require('./index');
// normal recursive function:
var neven = function (n) {
if (n == 0) return true;
else return nodd(n - 1);
};
var nodd = function (n) {
if (n == 0) return false;
else return neven(n - 1);
};
// tco recursive function:
var teven = tco(function (n) {
if (n == 0) return [null, true];
else return [todd, [n - 1]];
});
var todd = tco(function (n) {
if (n == 0) return [null, false];
else return [teven, [n - 1]];
});
// helper function to check for errors:
function run(f, num, t) {
try {
console.log(t+' for '+num+':');
console.log(f(num));
} catch(e) {
console.log(e);
}
}
// run both functions:
var n = 10000000;
run(neven, n, 'normal recursion');
run(teven, n, 'tco recursion');