Next: $E, Previous: $DO, Up: Built-in functions [Contents][Index]
$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.