define-syntax
と syntax-rules
を使うlisp(define-syntax <名前>
(syntax-rules (<リテラル> ...)
(<パターン> <テンプレート>
...))
lisp(define-syntax when ; `when`という名前のマクロを定義
(syntax-rules () ; リテラルは、今回はスルー
[(when test expr ...) ; `when test expr ...`という形を
(if test (begin expr ...))] ; `(if ..)`に変換する
))
...
というシンボルがある expr ...
というセットで見ればいい expr ...
は、 expr
の0個以上の繰り返しを表す