Node: $DUMPDEF, Next: , Previous: $DO, Up: Built-in functions



$DUMPDEF: Dump macro definitions to the terminal

In 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.