2

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

私はたくさん試しましたが、まだリモートで役立つものは何も思いつきません。末尾再帰アルゴリズムは、スタック セーフ ループに簡単に変換できます。それが実際の目標です。

4

1 に答える 1