10得票3回答
Common Lisp中标准对象和标准类的层次结构

我正在学习使用Lispworks学习Common Lisp,并尝试了解类系统。有一个称为standard-object的类,它被定义为: standard-object类是standard-class的实例,是除了它本身以外的每个standard-class实例的超类。 (摘自http...

9得票4回答
defgeneric中的可选参数?

我正在编写一些方法来生成各种元素的HTML。每个方法具有相同的输出,但不一定需要相同的输入。 回显一个game-board的方法也需要传入一个player参数(因为每个玩家只能看到自己的棋子)。 (defmethod echo ((board game-board) (p player))...

8得票4回答
有没有一种通用的方法可以克隆CLOS对象?

我正在寻找一种以浅层方式克隆CLOS对象的方法,使创建的对象将具有相同类型和每个插槽中相同的值,但是是一个新实例。我发现最接近的东西是标准函数copy-structure,它可以用于结构体进行此操作。

8得票2回答
何时使用initform?

我正在组建一个分子动力学相关工作的班级,具体如下: (defclass %atom (particle) ((name :initarg :name :initform (error "Every atom in the system must have a name!")) (m...

8得票1回答
常见的Lisp语言:针对defstruct结构体的slot-value

在Common Lisp中,我可以使用什么来访问结构体槽位(slot)并使用槽位名称/符号(slot name/symbol)进行操作? 我的要求是: (defstruct point (x 0) (y 0)) (defmacro -> (struct slot) `(slo...

8得票2回答
CLOS中的构造函数是什么?

如何用Lisp表达以下Java代码? class Foo { private String s; public Foo(String s) { this.s = s; } } class Bar extends Foo { public B...

8得票3回答
Common Lisp中对象的内存使用情况

有没有办法找出类的实例或基本数据类型在一般情况下使用了多少内存? 我在Cl中编写了一个玩具web框架,它通过代表html标记及其属性的类的实例创建和管理网页,并且由于它们应该生成一个html页面,因此它们在称为children的插槽中有子级。所以我在思考,如果我采取这种方法,用户会话将花费服...

8得票2回答
从通用函数中删除一个方法

我已经向通用函数 speak 添加了以下方法,但现在想在REPL中删除这个特定的方法,而不影响通用函数的其他方法。 (defmethod speak :around ((c courtier) string) ; [1] (format t "Does the Kin...

7得票1回答
CLOS的make-instance在SBCL中运行缓慢且导致堆耗尽。

我正在用Common Lisp(SBCL 1.1.5在64位Debian GNU/Linux上)编写一个多架构汇编器/反汇编器,目前该汇编器为x86-64的子集生成正确的代码。为了汇编x86-64汇编代码,我使用哈希表,其中汇编指令助记符(字符串),如"jc-rel8"和"stosb"是键,返...

7得票2回答
在defmethod中使用Common Lisp用户定义类型

我希望能够将一个定义好的类型用作defmethod的参数特化器。这样做的动机是为了提高可读性并在以后更灵活地进行更改。类似于这样: (deftype foo () 'fixnum) (defmethod bar ((x foo)) ...) (defmethod baz ((x foo)...