syntax-rules

[transformer spec] syntax-rules literals (pattern template) ...

R5RS, R6RS

Changes in R6RS:

  • pattern may have '_', which can match anything. '_' can appear in a pattern more than once.
  • In template, a form (... <template>) is <template> except a symbol ... is treated as an ordinary symbol rather than an ellipsis. This allows the macro to insert an ellipsis into the expanded result by writing (... ...).

See also define-syntax, let-syntax, letrec-syntax.