Vim + MzSchemeでマクロが使えた。
名前空間周りでエラーがあってマクロがうまく使えなかった(モジュールで囲むとうまくいく)ので、全くマクロはつかってなかったのですが、Vimのドキュメントを見ると、何やら名前空間をゴニョゴニョやってるみたいなので、解読中。
Vimのeval時にvim-global-namespaceを指定してやると、
(eval '(define-syntax L (syntax-rules () ((_ . x) (lambda . x)))) vim-global-namespace) (eval '((L (x) x) 2) vim-global-namespace) ; 2
うまくいった。define-syntaxもdefine-macroも使えるようになった。
しかし、vim-global-namespace以外を使うとうまくいかないのだ。謎だ。
全バッファで名前空間が共有されてしまうので問題あるけど。マクロ使いに一歩前進だ。
以下メモ。
SchemeはLisp-1だと思ってたけど、MzSchemeでは複数の名前空間あるらしい。
MzScheme supports multiple namespaces for top-level variable bindings, syntax bindings, module imports, and module declarations.
へぇぇ。