Macros are a way of reusing code. If you have several rules or facts that share a common form, you can put that common form in a macro definition, and provide the special parts as parameters when you call the macro.
for an example, see this npl test
the actual grammar is in this module