末尾呼び出しの最適化
tail call optimization, TCO
末尾呼び出しをジャンプに変換すること。これにより、例えば無限ループを再帰で書いてもリソースを使い尽くすことなく実行できる。
TCOを実装している処理系
SchemeではTCOが規格で要求されている
KotlinとScalaは明示的に末尾再帰関数とマークすることでコンパイラがループに変換する
SchemeはTCOを要求していると思っていたけれど、Proper tail recursion and space efficiencyによると
Proper tail recursion is not the same as ad hoc tail call optimization in stack-based languages.
らしい。要精読。omasanori.icon
#実装技術