标准定义了哪些通用功能?

What are the generic functions defined by the standard?

在 Common Lisp 中,有一些标准定义的通用函数,例如操作序列的函数。

但是看Graham的书A​​NSI 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