Arguments: symbol arglist &body body
def-function-spec-handler defines a new kind of function spec handler keyed on symbol, a symbol which is the fspec-first of the function spec. The handler must accept three arguments so arglist must be a list of three elements. The arguments are:
The body must return an appropriate value for the operation. The operations are:
:validate
Return a boolean indicating whether the place named by the
spec exists. This must never signal error.
fboundp
Return the function if the function is defined and return nil
if the function is not defined. An error must never be signaled on a validated function
spec.
:setfable
A boolean indicating whether (setf
fdefinition) is allowed.
setf
Set the function to the third (extra) argument value.
boundp
Boolean whether fmakunbound is allowed. Note
that this is not the same meaning as the CL function boundp.
fmakunbound
Make the function funbound.
block
For certain functions (e.g. setf functions) defun
is required to wrap the body in a block with a certain name. This operation must return
the name based on the spec and is called by the defun macro and the
compiler top level. This is a good place to put an error check for functions that may not
be defined by defun.
unintern
Detach the function-spec from its "oblist" for
potential garbage-collection of the entire function spec. Does not do an fmakunbound;
i.e. if an operation has squirrelled the function-spec away, it remains fully operational,
just as unintern of an fboundp symbol still leaves it fboundp.
The function function-name-p returns true when passed a valid function spec defined with def-function-spec-handler. fboundp can be used to determine whether a valid function spec defined with def-function-spec-handler actually names an operator.
See Function specs in implementation.htm for more information on function specs.
Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.2 page.
Created 2012年5月30日.