IT用語集 › プログラミング › トランポリン

トランポリン

プログラミング Svenska → 更新: 2026-10-22

末尾呼び出し最適化を持たない言語で、それを真似るパターン。再帰関数が自分を直接呼ぶ代わりに関数(サンク)を返し、メインのループがそれを順に呼ぶことでスタックオーバーフローを避ける。

TCO が標準化される前の Scheme で広まった古典的な手法である。深い再帰を使うアルゴリズムを、TCO のない JS・Python・Java で動かしたいときに使う。ライブラリには trampoline.js や clojure.core/trampoline がある。直接の再帰に比べ、「跳ね」のたびに関数呼び出しのオーバーヘッドがかかる。

実用例は、末尾呼び出しで遷移する状態機械や、相互再帰する関数だ。JS では TCO が ES6 仕様に入ったものの、デバッグ上の理由でほぼ実装されていない。Python は「デバッグがややこしくなる」という Guido の判断で、設計上持たない。トランポリンはその回避策である。

← 用語集に戻る