如何在 Steel Bank Common Lisp (SBCL) 中使用 `class-direct-superclasses` 和 `class-precedence-list`?

How to use `class-direct-superclasses` and `class-precedence-list` in Steel Bank Common Lisp (SBCL)?

this one等教程中,可以简单地使用:

CL-USER> (class-precedence-list (find-class (class-name (class-of 123))))

在 LispWorks 中,它们可以通过您的默认包使用列表获得,在 Allegro 中,它们是从 ACLMOP 导出的。

但是,如何在SBCL中使用class-precedence-listclass-direct-superclasses

观察:通过 The Common Lisp Cookbook.

在 CLOS 上有本教程的新版本

在SBCL中,需要使用包符号从sb-mop导入符号:

CL-USER> (sb-mop:class-direct-superclasses (find-class (class-name (class-of 123))))
(#<BUILT-IN-CLASS COMMON-LISP:INTEGER>)

CL-USER> (sb-mop:class-precedence-list (find-class (class-name (class-of 123))))
(#<BUILT-IN-CLASS COMMON-LISP:FIXNUM> #<BUILT-IN-CLASS COMMON-LISP:INTEGER>
 #<BUILT-IN-CLASS COMMON-LISP:RATIONAL> #<BUILT-IN-CLASS COMMON-LISP:REAL>
 #<BUILT-IN-CLASS COMMON-LISP:NUMBER> #<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>)