普通のマクロみたいに使えるようにしてみました
s式でJavaが書ける処理系のマクロをGaucheから使えるようにしてみました。
http://github.com/mas454/experiment/blob/master/mac-jts.scm
例えば、a[10]を(aref a 10)のようなs式から生成したい場合、
(require "./mac-jts") (import mac-jts) (tmacro aref (obj n) `(begin (val-mac ,obj) (jasm "[") (val-mac ,n) (jasm "]\n")))
のようにtmacroで定義したあと、
(aref a 10)
としてやると、文字列としてa[10]が返されます。
Lispの勉強を始めた頃、なぜか「マクロで別の言語を生成したりできるんやー」
と思い込んでいました。
というワケで実際にできるようにしてみました。