如何在 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-list
和class-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>)
在this one等教程中,可以简单地使用:
CL-USER> (class-precedence-list (find-class (class-name (class-of 123))))
在 LispWorks 中,它们可以通过您的默认包使用列表获得,在 Allegro 中,它们是从 ACLMOP 导出的。
但是,如何在SBCL中使用class-precedence-list
和class-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>)