ECLiPSe provides a very general mechanism to perform macro expansion of Prolog terms. Macro expansion can be performed in two situations:
they are applied just after a Prolog term has been read by the ECLiPSe
parser, i.e. during compilation or in a read predicate
they are applied just before a Prolog term is printed by one of the output predicates
Macros are attached to classes of terms specified by their functors or by their type. Macros obey the module system's visibility rules. They may be either locally (default) or globally visible. The macro expansion is performed by a user-defined Prolog predicate.