fix
末尾再帰アルゴリズムとして表現する方法がわかりません。それともすでに末尾再帰ですか?多分考え過ぎですよね…
const fix = f => x => f(fix(f)) (x); // redundant eta abstraction due to eager eval
const sum = fix(go => acc => ([x, ...xs]) =>
x === undefined
? acc
: go(acc + x) (xs)) (0);
const main = sum([1,2,3,4,5]);
console.log(main); // 15
私はたくさん試しましたが、まだリモートで役立つものは何も思いつきません。末尾再帰アルゴリズムは、スタック セーフ ループに簡単に変換できます。それが実際の目標です。