load と set! を実装

load

はじめに load を + - * / などと同じ土俵で実装しよう試みたが大間違いに気づいた。
マクロの展開以前の、テキスト => Node というフローで load しておかないとまずい。


他の手続きとは全然違うレイヤの手続きであることに今更ながらにきづいた。

set!

set! の実装で、また今の実装が微妙に良くないことに気づく。
(set! a 3) の場合、引数 a は eval されずに set! に渡ってほしい。
eval されたら今の値を返してしまい。
(set! 2 3) のような気まずい感じになってしまう。


ので apply の呼出し前に引数をすべて eval するのではなくて、apply の中で引数を eval するようにした方が良さそうだと判断。
さてこれで大丈夫だろうか。
大きな書き換えなので不安だけど、テスト書いているから大丈夫!