0
Такой объект называют
счёта. Для любого объекта
ка
стрелки
(catamorphism).
(
У начального объекта есть несколько важных свойств. Они очень часто встречаются в разных вариациях,
в понятиях, которые определяются через понятие начального объекта:
(
тождество
уникальность
слияние (fusion)
Эти свойства следуют из определения начального объекта. Свойство тождества говорит о том, что стрелка
ведущая из начального объекта в начальный является тождественной стрелкой. В самом деле по определе-
нию начального объекта для каждого объекта может быть только одна стрелка, которая начинается в 0 и
заканчивается в этом объекте. Стрелка (
кая стрелка, по определению категории для каждого объекта определена тождественная стрелка, значит эта
стрелка является единственной.
Второе свойство следует из единственности стрелки, ведущей из начального объекта в данный. Третье
свойство лучше изобразить графически:
(
(
0
Поскольку стрелки (
поскольку в категории с начальным объектом из начального объекта 0 в объект
стрелка, то стрелка (
234 | Глава 15: Теория категорий
Конечный объект
Дуализируем понятие начального объекта. Пусть в категории
объекта
1. Такой объект называют
1
Конечный объект определяет в категории функцию, которая ставит в соответствие объектам стрелки,
которые начинаются из данного объекта и заканчиваются в конечном объекте. Такую функцию называют
скобки для катаморфизма:
[(
Можно дуализировать и свойства:
[( 1 )] =
тождество
уникальность
слияние (fusion)
Приведём иллюстрацию для свойства слияния:
[(
[(
1
15.7 Сумма и произведение
Давным-давно, когда мы ещё говорили о типах, мы говорили, что типы конструируются с помощью двух
базовых операций: суммы и произведения. Сумма говорит о том, что значение может быть либо одним зна-
чением либо другим. А произведение обозначает сразу несколько значений. В Haskell есть два типа, которые
представляют собой сумму и произведение в общем случае. Тип для суммы это Either:
data Either a b = Left a | Right b
Произведение в самом общем виде представлено кортежами:
data (a, b) = (a, b)
В теории категорий сумма и произведение определяются как начальный и конечный объекты в специаль-
ных категориях. Теория категорий изучает объекты по тому как они взаимодействуют с остальными объек-
тами. Взаимодействие обозначается с помощью стрелок. Специальные свойства стрелок определяют объект.
Например представим, что мы не можем заглядывать внутрь суммы типов, как бы мы могли взаимодей-
ствовать с объектом, который представляет собой сумму двух типов
объект типа
двух специальных конструкторов:
Сумма и произведение | 235
Также нам хочется уметь как-то извлекать значения. По смыслу внутри суммы
нас скрыто, но мы знаем, что это только
и
При этом для того, чтобы стрелки
свойства:
Для любых функций
Итак суммой двух объектов