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