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以外を使うとうまくいかないのだ。謎だ。

全バッファで名前空間が共有されてしまうので問題あるけど。マクロ使いに一歩前進だ。


以下メモ。

SchemeLisp-1だと思ってたけど、MzSchemeでは複数の名前空間あるらしい。

PLT MzScheme: Language Manual

MzScheme supports multiple namespaces for top-level variable bindings, syntax bindings, module imports, and module declarations.

へぇぇ。