萌え指向プログラミング言語「萌香」のBlog
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 「萌香」のコードを整理しようと思ってコードを読んだんですが、「末尾再起の最適化に関するメモ」というコメントがなにを書いてるんだかさっぱりわからない。ポルナレフAAを貼りたくなるぐらい何がなんだかわからない。なんか悪い薬でもやってたんだろうか。 きっと末尾再帰っぽいことがようやくできて舞い上がっていたんだろう。黒歴史として早く葬りたい。 解読してみる。 --- begin 本文 --- 本プログラムには変数のフレームのスタックと継続のスタックが存在します。 クロージャの呼出し時に 結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことに 以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の --- 本プログラムには変数のフレームのスタックと継続のスタックが存在します。 --- Lexical scopeのクロージャなので、クロージャの再帰呼出しではフレームのスタックが積まれることはありません。 --- (その呼出しへの参照が残っていた場合、そこに保持されている。) --- クロージャの呼出し時にフレームの退避 --> クロージャの実行 --> フレームの復帰と行うと、クロージャの実行時に末尾再帰呼出しがあった場合フレームの退避 --> クロージャの実行 -->フレームの退避 --> クロージャの実行 --> フレームの復帰 --> フレームの復帰となります。 --- 結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことになります。フレームの復帰は最後のものだけ行えばよく、末尾再帰の場合、フレームの復帰の継続を作製する場合、次の継続にフレームの復帰があった場合継続の作製は行う必要はありません。 --- 以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の最適化になることになります。 PR |
カレンダー
カテゴリー
フリーエリア
最新CM
[11/30 Lehar9296
]
[11/19 Bihler7840
]
[04/09 pavelvolinkins]
最新記事
(05/04)
(03/13)
(02/18)
(10/30)
(04/17)
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
最古記事
(12/25)
(01/10)
(01/17)
(02/14)
(04/17)
アクセス解析
|