OCamlとTail Call
· ☕ 2 min read
末尾再帰について一度整理しておく. → OCaml, Haskell, Scala など多くの関数型言語の処理系は末尾再帰を最適化. 末尾呼び出し 1 2 3 4 5 6 7 8 fn f(x: T){ifisTrue(hoge){// not 末尾呼び出し returng();// 末尾呼び出し }else{returnx*h();// not 末尾呼び出し }} 末尾再帰 1 2 3 4 5 6 7 8 fn f(x: T){ifisTrue(hoge){returnf(x);// 末尾再帰 }else{returnx*f(x);// not 末尾再帰 }} → 末尾再帰はコールスタックを食いつぶさない コールスタック 通常のプログラムの実行モデルでは、関数を呼 ...