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…
根据 Common Lisp 对象系统类定义中的其他槽值初始化槽
在我的类定义中,我想根据另一个槽的值初始化一个槽。这是我想做的事情: (defclass my-class () ((slot-1 :accessor my-class-slot-1 :initarg slot-…
如何编写(简单)宏?
我需要为我正在编写的游戏编写一个宏 (with-hooks (monster method who what) &body body) 。 Monster 是一个 CLOS 对象,方法,谁是字符串,什么是函…