末尾呼び出しの最適化
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
#実装技術