syntax-rules

で、肝心の syntax-rules だけど、怪しいことに手を染めてみたり。まだ動くような code にはしてないんだけど、こんな勢い:

Macro の引数を template に挿すとき、確実に quote されると簡単にわかるもの以外は promise に置き換える。ただし閉包を使った擬物ではなくて、PROMISEP() できるものを用意する。それでできた form を、macro の定義環境と NEED_EVAL をつけて評価器に投げ返す。ちょっとでも評価器が改良されて再帰 nest が浅くなったら死ぬけどそんなの気にしてはいけない。

評価器に内部 promise の透過的評価を追加して、quasiquote (とか case とか ) の方では適宜 promise の皮を捨てて元の表現に戻す。

そうすると ScmObj を二つ保持する型を二つ (internal promise と hygienic macro 型) も追加することになるんだけど、compaction の関係で cons cell を一つ浪費するような形でしか追加できづ。

自らを畏れよ。最大の敵は己である。 - だれか

orz

追記: アホな発言を重ねてしまった。 を使ってわざと hygienicity を回避した code が動かんじゃないか。もうだめぽ。ふて寝しよう。

sequential datum translator

STL みたいにしたった。てへ。