由于另一个问题,我正在阅读 Practical common Lisp 。
我刚刚阅读了第 16 章和第 17 章,您可以在其中了解 LISP 如何管理对象。但是经过几年思考 Java 如何管理对象后,我似乎无法真正理解如何使用 CLOS 在 LISP 中实现更大的体系结构。
因此,我要求你们阅读 20 到 50 页的关于 CLOS 应用于更大架构而不是简单示例的内容。也许是几篇博文,甚至是经验!
泰
由于另一个问题,我正在阅读 Practical common Lisp 。
我刚刚阅读了第 16 章和第 17 章,您可以在其中了解 LISP 如何管理对象。但是经过几年思考 Java 如何管理对象后,我似乎无法真正理解如何使用 CLOS 在 LISP 中实现更大的体系结构。
因此,我要求你们阅读 20 到 50 页的关于 CLOS 应用于更大架构而不是简单示例的内容。也许是几篇博文,甚至是经验!
泰
如果您想了解这本书,Sonja E. Keene 的“COMMON LISP 中的面向对象编程”,第 11 章(开发高级 CLOS 程序:流)包含一个非平凡的示例,其中包含大约 40 页的多重继承.
详细讨论了八类(流、输入流、输出流、双向流、字符流、字节流、磁盘流和磁带流)。然后使用多重继承派生用户期望创建实例的具体类。
它比 Practical Common Lisp 中的银行账户示例更重要。您可能还会发现 Keene 书中的其余部分有助于更深入地了解 CLOS:整本书都是关于 CLOS 的。
如果你真的想了解 CLOS,可以回去阅读The Art of the Meta Object Protocol,它为 CLOS 的子版本 Closette 提供了基础和底层代码。
或许可以看看后面章节中介绍的示例应用程序。你会看到类和对象只是你盒子里的另一个工具。抵制使用 Lisp 语法编写 Java 的冲动。
另一个值得关注的地方是Success Lisp,第 7 章和第 14 章是基础知识,第 31 章和 3.10 的一部分是关于包和处理大型项目的。
一些 Lisp 大师(可能是 Paul Graham,但我不确定)曾经说过他根本不需要 CLOS。
编辑:我认为您的困惑可能来自这样一个事实,即在 Lisp 中,您不使用类系统来组织名称空间。这是单独进行的;两者实际上并没有任何关系。
我们Weblocks也大量使用 CLOS,因此您可能需要稍微浏览一下源代码。
更大的 CLOS 应用程序是 1) 来自 Lispworks 的 CAPI 2) cl-http webserver 3) 一个非常大的 CLOS 包是 CLIM 4) 如果你喜欢 OpenGenera(这是一个使用 Common Lisp 和一些前身 ZetaLisp 5 的 Lisp 操作系统),一个较小的包是http: //www.cliki.net/mel-base
问候弗里德里希