2007-10-21
■ [scheme] 4つのマクロ
Lisp/Schemeのマクロには define-macro, defmacro, syntax-rules(define-syntax), syntax-caseの4つの系列があり、 現在のGaucheではdefine-macroとsyntax-rulesが使える。
で、[Gauche-devel-jp] Re: define-macroをdefine-syntaxに直すには? から予測したのだが、
- define-macroはLisp由来のマクロで、hygenicではないが、展開中にScheme式の評価が使える。
- defmacroはLisp由来のマクロで、hygenicであり(gensymという関数を使う)、Lisp式の評価が使える。
- syntax-rulesはScheme(R5RS)由来のマクロで、hygenicであるが、Scheme式の評価は使えない。
- syntax-caseはScheme(R6RS, srfi-93)由来のマクロで、hygenicであり、Scheme式の評価が使える。
という理解で良いのだろうか。