




For some purposes, most usefully trace and defadvice, LispWorks allows dspecs that do not name a global definition, but a local function. These are of the form:
(subfunction sub-name parent-dspec)
where parent-dspec is another dspec (possibly a subfunction dspec itself). For flet and labels, it is also possible to use the form:
An alias for (subfunction (flet sub-name) parent-dspec).
(labels sub-name parent-dspec)
An alias for (subfunction (labels sub-name) parent-dspec).
sub-name is the name of the subfunction inside the parent, which by default is determined as follows:
flet and labels, the name is a two element list of the form (flet function-name) or (labels function-name), where function-name is the function name in the flet/labels definition.
You can override the default name by using the LispWorks-specific hcl:lambda-name declaration (see declare). Note that you should use the form
(declare (lambda-name (subfunction sub-name))
to get a name that is useful for debugging. If you do not use subfunction, then the debugger cannot find the source for function.
equal) the subfunction name in the dspec to the name of each subfunction in the parent function.
(top-level-form (location tlf))
location is an atomic location (not containing :inside) and tlf identifies the top-level form within that location. These are used as parent dspecs in subfunction dspecs and :inside locations. These dspecs can be canonicalized and prettified, and can be returned as dspecs from the location finders.
LispWorks User Guide and Reference Manual - 20 Sep 2017