エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
gotoが使えない言語での末尾呼出し最適化はどうするのかと思っていたらこれを発見。 ベース言語が末尾呼... gotoが使えない言語での末尾呼出し最適化はどうするのかと思っていたらこれを発見。 ベース言語が末尾呼出し最適化を保証してくれない場合によく使う手としてトランポリンがあります。 各関数を、結果を返すのではなく、その関数の継続手続きを返すように書いておきます。そして、 sub run { my ($proc) = @_; for (;;) { $proc = $proc->(); } }みたいにひたすら返って来た継続を呼び出しつづけるドライバを書いて駆動します。 これだとベース言語のスタックを消費しません。 http://d.hatena.ne.jp/tociyuki/20061116/1163674424 なるほど、呼び出し先からさらに関数を呼んでしまうとスタックが残ったままになってしまうので、 いったんrunに戻ってきてもらうことによってスタックから取り除いてから次の呼び出しをするわけか