R5RSマクロ
define-syntaxとsyntax-rulesを使う
code:lisp
(define-syntax <名前>
(syntax-rules (<リテラル> ...)
(<パターン> <テンプレート>
...))
名前
マクロの名前
パターンが問題なので、別に名前がズレていてもいいのか #?? そうする理由は特に思いつかないけど
リテラル
特殊なシンボルにマッチさせたい時に使うらしい
パターン
テンプレート
パターンにマッチしたら、テンプレートに変換される
例
code:lisp
(define-syntax when ; whenという名前のマクロを定義
(syntax-rules () ; リテラルは、今回はスルー
[(when test expr ...) ; when test expr ...という形を
(if test (begin expr ...))] ; (if ..)に変換する
))
...というシンボルがある
初見、省略してんのかと思ってたmrsekut.icon
expr ...というセットで見ればいい
expr ...は、exprの0個以上の繰り返しを表す