Chapter 8 Macros Users can create their own special forms by defining macros . A macro is a symbol that has a transformer procedure associated with it. Ideally, a macro specifies a purely textual transformation from code text to other code text. This kind of transformation is useful for abbreviating an involved and perhaps frequently occurring textual pattern. Scheme will then evaluate this expression, as it would any other.
Macro expansions can refer to other macros.
Typically this output is a list. Output lists can be quite complicated. It is easy to see that a more ambitious macro than when could lead to quite an elaborate construction process for the output list. In such cases, it is more convenient to specify the macro's output form as a template , with the macro arguments inserted at appropriate places to fill out the template for each particular use of the macro. Scheme provides the backquote syntax to specify such templates.