Node:$DUMPDEF, Next:$E, Previous:$DO, Up:Built-in functions
$DUMPDEF
: Dump macro definitions to the terminalIn the call $DUMPDEF(m1, m2, ...)
, m1, m2, and so on
are macro calls (with arguments if appropriate). Two lines of output
are generated for each argument. Line 1 is the macro definition; line 2
is its expansion using the provided arguments.
One can use this built-in to debug one's own macros, or to find out the secrets of FWEB's built-ins. As an example, if one says
$DUMPDEF($EVAL(2^^4))@%
it responds with the two lines
$EVAL($0) = $$EVAL($0) $EVAL(2**4) = 16
(The $n
notation indicates the n-th argument of the macro.)
If one replaces $EVAL
with $$EVAL
in the above
$DUMPDEF
, it will respond
$$EVAL($0) = <built-in> $$EVAL(2**4) = 16
The purpose of code such as $EVAL($0) = $$EVAL($0)
is to ensure
that the argument of $EVAL
is expanded if it contains macros; the
primitive function $$EVAL
does not do that expansion
automatically.
Names indicated as <built-in>
by $DUMPDEF
may be redefined
as ordinary macros, but this is in general a very bad idea; other
parts of FWEB may mysteriously stop working.