有关函数式编程的文章,其中很多都提到了Universe。 我正在阅读Bartosz Milewski的《程序员的类别理论》一书,他还多次提到宇宙。 问题是,在函数式编程和范畴论的语境中,宇宙意味着什么?
答案 0 :(得分:5)
在范畴论的背景下,引入了宇宙以绕过集合论的悖论。例如,Set是集合的类别,因此其对象对应于集合。此类别中所有对象的集合就是所有集合的集合。但是没有所有的一套! Grothendieck介绍了宇宙的概念来解决这个问题。本质上,给定Universe中的所有集合都不是该Universe中的集合,而是下一个更大Universe中的集合。
在编程中,我们必须处理多态函数,即为所有类型定义的函数。但是,所有类型都不构成集合。因此,Agda之类的语言使您可以处理给定Universe中的类型。它们称为最低的Universe Set,但是Set本身是Set 1 的成员,依此类推。