有没有合理的理由说明Hyperspec的以下声明是什么样的?"如果list-1和list-2之间存在重复,则结果中只有一个重复的实例.如果list-1或list-2中包含重复的条目,则冗余条目可能会或可能不会出现在结果中."
在我读到这篇文章之前,我假设联盟应该返回一个唯一的列表并且为什么我的代码没有这样做而感到沮丧.删除列表之间但不在列表之间的重复项似乎也很奇怪.为什么甚至指定这个?
似乎人们应该能够假设联合会产生一个唯一的集合元素列表,或者我错过了什么?
有关Hyperspec的完整页面,请参阅http://clhs.lisp.se/Body/f_unionc.htm
如果您的代码只设置了唯一的元素(如1 2 3),那么UNION将保留此属性.
如果您的代码具有包含非唯一元素(如1 2 2 3)的集合,则UNION无需在结果集中强制执行唯一性.
删除重复项是通过单独的函数完成的:REMOVE-DUPLICATES.