如何在 Steel Bank Common Lisp (SBCL) 中使用 `class-direct-superclasses` 和 `class-precedence-list`?
在像 this one 这样的教程中,人们可以简单地使用: CL-USER> (class-precedence-list (find-class (class-name (class-of 123)))) 在 LispWorks 中,…
为什么这个符号扩展在 Common Lisp 中格式错误?
我正在尝试使用 SBCL 和 Slime 在这个关于 CLOS 的 教程 上进行练习( Emacs)。 我有这个类、实例和函数来设置插槽的值: (defclass point () (x y z…
在lisp中如何找到一个类的包?
假设我想找出一个类是在哪个包中定义的,例如 (defclass x ()()) 是在 p1 中定义的。一种方法是通过 (symbol-package 'x) 获取包。该解决方案的问题在…
CLOS 中 (:before/:after) 方法调用的顺序?
我需要一些帮助来理解以下代码的执行顺序。 我创建了一个 pie 实例,使用以下内容: (cook (make-instance 'pie)) 我知道 lisp 执行从最具体到最不具…
Lisp:如何覆盖 CLOS 类的默认字符串表示形式?
在 Common Lisp 中,如何覆盖 CLOS 类的默认字符串表示形式,以便对 format 或 princ 的调用将打印出可理解的内容,即使嵌入了该类的对象也是如此在其…
是否可以在现有类中动态添加一个超类
在 Common-Lisp CLOS 中, 是否可以动态添加一个超类 在现有的班级中。 更新: 我想定义 defassoc 类型的宏来关联某些行为 使用相同参数的方法/函数,…
使用 Common Lisp CLOS 对象作为哈希表中的键?
我想使用 Common Lisp CLOS 对象作为哈希表中的键。我以为事情会这么简单: (defclass my-class () ((a :accessor a :initarg a))) (defun my-class= …
sbcl 中奇怪的类优先级列表
在 sbcl 中, *(sb-mop:class-precedence-list (find-class 'cons)) ==>(# # # #) cons 继承自 list 而不是相反,这不是很奇怪吗?我在这里缺少什么?…
Lisp:我如何获取在initialize-instance :around方法中创建的实例
我想为类 X 创建一个初始化实例的 (:around Qualified) 专门化器,它将首先调用下一个方法,然后调用另一个类的 make-instance,为其提供创建的 X 实…
CLOS 相对于其他基于类的 OO 系统的优势
我曾遇到过这样的说法:Common Lisp 对象系统 (CLOS) 优于传统的(基于类的)面向对象系统。 CLOS 的维基百科条目 提到了两种方法之间的差异 - 主要是…
比较 Common Lisp 和 Gambit 的库访问和对象系统
我对 Gambit Scheme 非常感兴趣,特别是它支持的广泛平台,以及它在需要时将 C 代码直接放入您的 Scheme 源代码的能力。也就是说,它是一个方案,与 C…
Lisp 中槽的访问问题(CLOS)
我有一个 Node 类,它有一个“元素”槽,其中包含一个包含数字和一个字母的列表,例如: “(1 2 3 b 4 5 6) (defclass node () ((element :reader get…