It is possible to rename an already defined macro. To do this, you need
the builtin defn
:
defn(name)
which expands to the quoted definition of name. If the argument is not a defined macro, the expansion is void.
If name is a user-defined macro, the quoted definition is simply
the quoted expansion text. If, instead, name is a builtin, the
expansion is a special token, which points to the builtin's internal
definition. This token is only meaningful as the second argument to
define
(and pushdef
), and is ignored in any other context.
Its normal use is best understood through an example, which shows how to
rename undefine
to zap
:
define(`zap', defn(`undefine')) => zap(`undefine') => undefine(`zap') =>undefine(zap)
In this way, defn
can be used to copy macro definitions, and also
definitions of builtin macros. Even if the original macro is removed,
the other name can still be used to access the definition.
The macro defn
is recognized only with parameters.
Go to the first, previous, next, last section, table of contents.