保存 CLOS 对象

Saving CLOS objects

将任何 Common Lisp 结构对象保存到文件(可读)似乎相对简单

(defun save-structure-object (object filename)
  (with-open-file (stream filename :direction :output
                                   :if-exists :supersede)
    (with-standard-io-syntax (print object stream))))

然而,对于 CLOS 对象实例,Make clos objects printable in lisp 处的 post 表示更复杂的配方。

首先,关于 closer-mop 的评论是否与保存 clos class 实例的更简单方法有关?

其次,那里提供的代码是否作为打印任何 clos 实例的通用实用程序呈现?

Closer to MOP 可以避免您所指的 post 中 read-time 条件句的危险纠结。一般来说,使用许多人使用的 OOTB 解决方案比随机的临时黑客攻击更安全——你自己的或别人的。

closer-mop 出现之前,我写了自己的 CLOS/MOP compatibility layer and CLOS object i/o。我建议您使用它而不是您引用的 SO 答案中的代码。