構文木をマッチングしてみる。
sumi言語で、quote()で囲まれた部分は構文木を返すようにしてみました。
そして、sumi言語で作ったmatch関数を使って構文木をマッチングできるように
なりました。
print(match( quote($f($arg){$body}), quote(a.b(a,b,c){a+b*d}),{} )+"\n")
上の例では、
$f:XOX("a",".","b") $arg:XOX(XOX("a",",","b"),",","c") $body:XOX("a","+",XOX("b","*","d"))
が返ります。
マッチ構文を用意すれば、例えば、
print(match($f($arg){$body}){a.b(a,b,c){a+b*d})+"\n")
のように出来るけど、まだ、やってません。
というか、構造化されたマクロで何とかしようと思っています。
http://sakurai.s59.xrea.com/compact/compact0.0.3/sumi.html
quasiquotation in lisp あたり読みたいけど英語が辛い。。。
おそらく、Compact式を使えばLISPで出来ることはだいたい、出来るはずなので、
なにせ、データ=プログラムなので、もう凄いですよ。ウハウハです。
でも、誰も理解してくれない(泣)