A decision framework: use macros for syntax and evaluation control, not for cleverness.
Macros are worth it when a function cannot do the job because a function always evaluates its arguments before it runs.
Good reasons to write a macro:
when, and, or).Bad reasons:
If you can solve the problem with a function and good naming, that is usually the better choice.