Skip to content

Instantly share code, notes, and snippets.

@mattbierner
Created December 10, 2013 17:28
Show Gist options
  • Select an option

  • Save mattbierner/7894538 to your computer and use it in GitHub Desktop.

Select an option

Save mattbierner/7894538 to your computer and use it in GitHub Desktop.
Defunctionalized Javascript Factorial
var fac = let
facImpl = \n, sum ->
(n ? ['fac', n - 1, n * sum] : ['done', sum]),
trampoline = \k -> {
while (true) {
switch (k[0]) {
case 'done': return k[1];
case 'fac': k = facImpl(k[1], k[2]); break
}
}
}
in
\n -> trampoline(facImpl(n, 1));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment