在Common Lisp中,标准定义了一些通用函数,例如操作序列的函数。
然而,在相关章节中查看Graham的书 ANSI Common Lisp 和Steele的书 Common Lisp - 语言,我找不到任何定义的通用函数列表标准。
标准定义的通用功能是什么?
答案 0 :(得分:4)
操纵sequences的功能
是不是 generic-function
。
它们列在17.3 The Sequences
Dictionary部分中。
由...指定的所有symbol
标准列在1.9 Symbols in the COMMON-LISP
Package部分。
部分标准化列表
generic functions可以
在7.7 The Objects
Dictionary部分中找到(例如,
print-object
列于。{
第22.4 The Printer Dictionary}节。
查找现有的Lisp功能应该不会很难使用
apropos
。
一旦看到看似合理的符号,请使用
describe
找出它是什么
实际上。
请记住,大多数实现提供的标准更多。 你可以这样做:
(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))))
答案 1 :(得分:1)
我目前认为没有比浏览CLHS Master Index和grep for" Generic Function"的页面更好的方法了。
使用脚本
将此建议应用于HyperSpec的本地副本% sed -n -e '
/Standard Generic Function/{
s/.*Standard Generic Function *//
s|</A>||
p
}' X_Mast_*.htm | sort -u
产生以下列表
(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