在某个地方,我看到了一些来自ANSI委员会成员的个人笔记。我以为是肯特·皮特曼,但是搜索他的网站什么都找不到。谷歌也没有。
我对不将条件系统与CLOS集成的决定背景感兴趣。CLtL2说这是既成事实,我很好奇为什么它没有发生。
发布于 2022-05-28 20:20:29
条件系统没有与CLOS集成,因为现有条件系统的实现不是基于CLOS的(至少在一种情况下,它们是基于口味的),因为CLOS在标准化过程中很晚才存在。由于条件系统在任何实现中都有很深的根源,因此要求这些实现将很大一部分的实现挖出来,用一些基于CLOS的内脏来代替它们--这些实现本来就是为了使复杂的条件处理成为可能,而这些实现本来就有很大的劣势。这样做既愚蠢又会使标准化进程脱轨,因为这些实现的代表会被这样的决定所激怒。所以做出了正确的决定。
当时还不清楚CLOS能否在库存硬件上真正发挥作用(也许这还不清楚,但股票硬件现在速度如此之快,我们都很高兴地接受其他语言的实现,这些语言的实现比良好的CLOS实现速度慢得多,因此问题不再重要)。CL也被认为是很大的(很难记住,当我的成熟的、多毛的CL IDE包含了整个系统以及它自己的所有文档只有我的web浏览器大小的2/3时),所以人们想到了子集实现,这些实现可能不包含CLOS,但真正需要包含条件系统。
特别值得注意的是,CLHS问题(不是规范的一部分) 克洛斯-条件-再次,其文本如下:
条件系统不应该太紧密地集成到CLOS中,原因有两个:一些实现已经有一个不基于CLOS的本机条件系统,并且应该可以集成本机条件和ANSI CL条件。有些人希望定义一个ANSI公共Lisp子集,它不包含CLOS,但包含条件。 问题领域是使用DEFCLASS、MAKE-实例和DEFMETHOD来定义和创建条件,而不是使用更抽象的宏来隐藏条件的CLOS实现,以及将条件槽的实现公开为CLOS槽。如果用户代码是以更抽象的方式编写的,它可以在不包含CLOS的子集语言中运行。
这不是规范性文本,但你可以看到人们在想什么。
https://stackoverflow.com/questions/72414053
复制相似问题