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"))が必要。

いえぃ!

モジュールの使い方を覚えないと・・・。

参考