マクロ展開の実装
マクロの展開の定義を実装するにあたり具体的に考えてみた。
これはマクロの呼ばれかたを定義したもの。
NODES SYMBOL[_] SYMBOL[a]
これは実際にマクロが呼ばれた状態。
NODES SYMBOL[show] STRING["higepon"]
以上二つを比較すると。
a => "higepon" ということが分かります。
これを、以下のマクロ構造の定義に当てはめるとマクロ展開が完成です。
NODES SYMBOL[display] SYMBOL[a]
というのを実装しよう。
→できた!。
残る todo
- マクロがマクロを参照している場合
- マクロのマッチを組み込む
- deepクローンで非破壊にする
- マクロパターンをどこかに格納する