普通のマクロみたいに使えるようにしてみました

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の勉強を始めた頃、なぜか「マクロで別の言語を生成したりできるんやー」
と思い込んでいました。

というワケで実際にできるようにしてみました。