gpt4 book ai didi

common-lisp - 比较 CLOS 对象

转载 作者:行者123 更新时间:2023-12-02 01:23:40 24 4
gpt4 key购买 nike

我想知道为什么 Common Lisp 中没有内置的相等运算符来比较 CLOS 对象(标准类)。例如,“equalp”可以应用于数组、结构、哈希表,但不能应用于对象。

我假设一个新的测试下降一个对象并检查插槽值是否相等可以由程序员编写,但我想知道是否有理由不将其作为标准的一部分,因为我认为这是一个相当普遍的事情做?例如,似乎“make-hash-table”的测试函数必须是内置函数之一*,因此,我真的不知道如何将对象用作哈希表中的键或值。

*我注意到有一个相关的问题( Using Common Lisp CLOS objects as keys in a hashtable? ),但它并没有真正回答我的问题。

谢谢和欢呼!

最佳答案

我无法提供明确的答案,但我怀疑部分原因是 historical :
equalp 的规范之后,CLOS 被添加到 ANSI CL最终确定。

请注意 equalp作品于 structure-object 如您所料。
另请注意,结构具有 readable print syntax
CLOS objects缺少它。

然而 ,这可能不像人们一开始想象的那样大的疏忽。

CLOS 对象可以是相对重量级的;
鉴于 slot accessors
generic functions ,
找出对象相等性可以很快地转变为比较函数。

关于common-lisp - 比较 CLOS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38445914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com