Macro Spy

Part of:

package metabang.utilities
( spy &rest < forms > )
A debugging tool: wrapping this around a form causes both the form and its
values to be printed on *trace-output*. Like `progn,' this returns the value(s)
of the last form, so that it can be safely wrapped about functional code as
well. In other words, (spy (foo)) returns the same values as (foo).
The first form can optionally be a list of options, eg., keyword value pairs).
Options supported:
:STREAM <stream> - directs output to `stream'
:NO-NEWLINE <boolean> - if true, suppresses insertion of newlines between forms
:NO-EXPAND <boolean> - if true, reprints the form with values replacing subforms
:DEBUG <symbol> - print only if we are debugging `symbol' or *spy-debugging* is true (the default)