Macro expansion can have counterintuitive consequences. This section describes some important consequences that can lead to trouble, and rules to follow to avoid trouble.
|• Wrong Time||Do the work in the expansion, not in the macro.|
|• Argument Evaluation||The expansion should evaluate each macro arg once.|
|• Surprising Local Vars||Local variable bindings in the expansion require special care.|
|• Eval During Expansion||Don’t evaluate them; put them in the expansion.|
|• Repeated Expansion||Avoid depending on how many times expansion is done.|