In Common Lisp there are a few generic functions defined by the standard, for instance functions to manipulate sequences.
However looking at Graham's book ANSI Common Lisp and Steele's book Common Lisp – The language at the relevant chapters, I could not find any list of the generic functions defined in the standard.
What are the generic functions defined by the standard?
Functions that manipulate sequences
are not generic-functions.
They are listed in the section 17.3 The Sequences
Dictionary.
All symbols specified by the
standard are listed in the section 1.9 Symbols in the COMMON-LISP
Package.
A partial list of standardized
generic functions can be
found in section 7.7 The Objects
Dictionary (e.g.,
print-object is listed in
section 22.4 The Printer Dictionary).
Finding existing Lisp functionality should not be hard using
apropos.
Once you see a plausibly looking symbol, use
describe to find out what it
actually does.
Remember that most implementations offer more that the standard specifies. You can do something like this:
(dolist (pack (package-use-list "COMMON-LISP-USER"))
(format t "~S~%" pack)
(do-external-symbols (s pack)
(when (and (fboundp s)
(typep (fdefinition s) 'generic-function))
(format t " ~S~%" s))))
I currently see no better way than to go through the pages of the CLHS Master Index and grep for "Generic Function".
Applying this suggestion a local copy of the HyperSpec using the script
% sed -n -e '
/Standard Generic Function/{
s/.*Standard Generic Function *//
s|</A>||
p
}' X_Mast_*.htm | sort -u
yielded the following list
(SETF CLASS-NAME)
ADD-METHOD
ALLOCATE-INSTANCE
CHANGE-CLASS
CLASS-NAME
COMPUTE-APPLICABLE-METHODS
DESCRIBE-OBJECT
DOCUMENTATION, (SETF DOCUMENTATION)
FIND-METHOD
FUNCTION-KEYWORDS
INITIALIZE-INSTANCE
MAKE-INSTANCE
MAKE-INSTANCES-OBSOLETE
MAKE-LOAD-FORM
METHOD-QUALIFIERS
NO-APPLICABLE-METHOD
NO-NEXT-METHOD
PRINT-OBJECT
REINITIALIZE-INSTANCE
REMOVE-METHOD
SHARED-INITIALIZE
SLOT-MISSING
SLOT-UNBOUND
UPDATE-INSTANCE-FOR-DIFFERENT-CLASS
UPDATE-INSTANCE-FOR-REDEFINED-CLASS
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With