标准定义了哪些通用功能?
What are the generic functions defined by the standard?
在 Common Lisp 中,有一些标准定义的通用函数,例如操作序列的函数。
但是看Graham的书ANSI Common Lisp和Steele的书Common Lisp – The language的相关章节,我找不到标准中定义的通用函数的任何列表。
标准定义了哪些泛型函数?
你问的问题
操纵sequences的函数
不是 generic-function
。
它们列在 17.3 序列部分
词典.
所有 symbol
指定的
标准列在 1.9 COMMON-LISP 中的符号部分
包裹.
部分标准化列表
generic functions可以
在 7.7 节中找到对象
字典(例如,
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))))
我目前认为没有比浏览 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
在 Common Lisp 中,有一些标准定义的通用函数,例如操作序列的函数。
但是看Graham的书ANSI Common Lisp和Steele的书Common Lisp – The language的相关章节,我找不到标准中定义的通用函数的任何列表。
标准定义了哪些泛型函数?
你问的问题
操纵sequences的函数
不是 generic-function
。
它们列在 17.3 序列部分
词典.
所有 symbol
指定的
标准列在 1.9 COMMON-LISP 中的符号部分
包裹.
部分标准化列表
generic functions可以
在 7.7 节中找到对象
字典(例如,
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))))
我目前认为没有比浏览 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