Vim+MzSchemeでマクロが・・・
もうひとつの懸案事項だったマクロも解決!
Vim+MzSchemeでdefine-syntaxやdefine-macroをそのまま使ってしまうと、「トップレベル変更は出来ない」と言われるので、モジュールで囲む。
(module s mzscheme (define-syntax L (syntax-rules () ((_ . args) (lambda . args)))) (display ((L (x) (* x 10)) 5))) (module m mzscheme (require (lib "defmacro.ss")) (define-macro my-when (lambda (test . branch) (list 'if test (cons 'begin branch)))) (my-when #t (display "Hello, Vim+MzSceme Macro World!!") (newline))) (require s) (require m)
define-macroを使う場合は、(require (lib "defmacro.ss"))が必要。
いえぃ!
モジュールの使い方を覚えないと・・・。
参考
- PLT MzScheme: Language Manual - Syntax and Macros
- pwdのサンプルがヤバすぎ。なんでもアリ。