β変換 その7 - Scheme VM を書く

大きめのコードで不要 let がきちんと動くようになった。
動かしてみて分かったのですがなかなか不要な let はないです(笑)。


一つ、はまったのが以下の入れ子の let の場合。正解は let が2つとも削除されて定数0 = ($CONST 0) なのだけど。

 (let1 a 0
   (let1 b a b))

内側の let1 の b の初期値 a を、 let から削るときに参照カウントをデクリメントするのを忘れてた。


次の一手は何だっけか。
ChangeLog メモを読み返すと、インライン展開のようだ。明日中に終わるかな。終わらないだろうな。