В статьях о функциональном программировании много упоминаний о вселенной. Я читаю книгу «Теория категорий для программистов» Бартоша Милевски, и он также много раз упоминал о вселенной. Вопрос в том, что означает вселенная в контексте функционального программирования и теории категорий?
Что означает вселенная?
Ответы (1)
В контексте теории категорий вселенные были введены для того, чтобы обойти парадоксы теории множеств. Например, Set — это категория наборов, поэтому его объекты соответствуют наборам. Набор всех объектов в этой категории будет набором всех наборов. Но нет набора всех наборов! Гротендик представил идею вселенных, чтобы справиться с этим. По сути, множество всех множеств в данной вселенной — это не множество в этой вселенной — это множество в следующей большей вселенной.
В программировании нам приходится иметь дело с полиморфными функциями, то есть функциями, определенными для всех типов. Но все типы не образуют множество. Таким образом, такие языки, как Agda, позволяют работать с типами внутри данная вселенная. Они называют низшую вселенную Set, но сам Set является членом Set1 и так далее.