UNPKG

tco

Version:

Tail call optimization in Node

10 lines (8 loc) 1.41 kB
[ "http://sweetjs.org/browser/editor.html#macro%20tail%20%7B%0A%20%20rule%20%7B%20$f($x:expr%20(,)%20...)%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5B$f,%20%5B$x%20(,)%20...%5D%5D%0A%20%20%7D%0A%7D%0A%0Amacro%20ret%20%7B%0A%20%20rule%20%7B%20$x:expr%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5Bnull,%20$x%5D%0A%20%20%7D%0A%7D%0A%0Atail%20fun(a,%20b);%0Aret%20val;%0A", "http://sweetjs.org/browser/editor.html#macro%20ret%20%7B%0A%20%20rule%20%7B%20$f($x:expr%20(,)%20...)%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5B$f,%20%5B$x%20(,)%20...%5D%5D%0A%20%20%7D%0A%20%20rule%20%7B%20$x:expr%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5Bnull,%20$x%5D%0A%20%20%7D%0A%7D%0A%0Aret%20fun(a,%20b);%0Aret%20val;%0A", "http://sweetjs.org/browser/editor.html#macro%20ret%20%7B%0A%20%20rule%20%7B%20$f($x:expr%20(,)%20...)%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5B$f,%20%5B$x%20(,)%20...%5D%5D%0A%20%20%7D%0A%20%20rule%20%7B%20$x:expr%20%7D%20=%3E%20%7B%0A%20%20%20%20return%20%5Bnull,%20$x%5D%0A%20%20%7D%0A%7D%0A%0Avar%20teven%20=%20tco(function%20(n)%20%7B%0A%20%20%20%20if%20(n%20==%200)%20ret%20true;%0A%20%20%20%20else%20ret%20todd(n%20-%201);%0A%7D);%0Avar%20todd%20=%20tco(function%20(n)%20%7B%0A%20%20%20%20if%20(n%20==%200)%20ret%20false;%0A%20%20%20%20else%20ret%20teven(n%20-%201);%0A%7D);%0A" ].forEach(function (e) { console.log(e.replace(/\(/g, "%28").replace(/\)/g, "%29")); console.log(); });