Skip to content
This repository was archived by the owner on Nov 29, 2018. It is now read-only.

natefaubion/tailrec.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

tailrec.js

Dead simple auto-trampolining for Javascript.

// Write a tail-recursive function...
var recfun = function (x) {
  return x === 0 ? 0 : recfun(x - 1);
};

recfun(100000000); // Maximum call stack size exceeded!

// But wrap it with tailrec...
recfun = tailrec(recfun);

recfun(100000000); // Works!

Obligatory Factorial Example

function factorial (num) {
  var fac = tailrec(function (x, acc) {
    return x === 0 ? acc : fac(x - 1, x * acc);
  });
  return fac(num, 1);
}

About

Dead simple auto-trampolining for Javascript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published