Answers:
避免类型语义中的集合的主要原因是典型的编程语言允许我们定义任意递归函数。因此,无论类型的含义是什么,它都必须具有定点属性。具有此类属性的唯一集合是单例集合。
更准确地说,类型为τ的递归定义值(其中通常τ是函数类型)由定点方程v = Φ (v )定义,其中Φ :τ → τ可以是任何程序。如果将τ解释为集合T,那么我们将期望每个f :T → T具有一个固定点。但是具有此属性的唯一集合T是单例。
当然,您还可以意识到,罪魁祸首是经典逻辑。如果您使用直觉集合论,则可以假设存在许多具有定点性质的集合。实际上,这已用于给出编程语言的语义,例如
亚历克斯·辛普森(Alex Simpson),《直觉集合论模型中递归类型的计算充分性》,《纯逻辑与应用逻辑》(Annals of Pure and Applied Logic)年刊130:207-275,2004。
除了少数例外(Dave Clarke引用了一个例外),类型的简单集合论语义很难使用。原因是数据抽象在集合论语义上不能很好地发挥作用。
基本问题是最容易看到总共有态类型纯粹功能的语言,并考虑多态型