Lispから他言語へのトランスレータでLispのマクロシステムをそのまま使う方法
javascriptでスタック食わずにガンガン再帰したくて今日ちろっと試していたことがあるんだけど、その過程で見つけたことのメモ。
1. トランスレータはターゲット言語で実装するより翻訳元言語で実装する方が1000倍楽. パーサは(read)で一発。当たり前っちゃ当たり前。
2. 翻訳元言語の構文が 実装に使う処理系が解釈できる構文 のサブセットなら、トランスレータをマクロとして提供して、構文木を舐める際に適切にmacroexpandを噛ませれば 実装に使う処理系のマクロシステムを翻訳元言語からそのまま使える。
なに言ってるかわからなかったらgist見てください。