末尾再帰の最適化

SIODのアルゴリズムをパクったらできたっぽい。
SIODのクロージャの末尾再帰の最適化は、クロージャの環境を拡張したものを現在の環境にして、codeの部分を次にえばるS式にしてる。頭いいなぁ。

自分が作っている処理系はネイティブスタックで末尾再帰の最適化をやりたいのに、参考にした処理系がEmacsとSTklosってのは選択が悪い。Emacsは末尾再帰の最適化はなされていないし、STklosはネイティブスタックではなくスタックマシンを実装している。

一番最初に読んだminischemeも考えると、つくづく自分の選択の悪さを感じられる。初めからSIODを読めばよかった。