52700.fb2
= id
join . fmap join
= join . join
Порядок следования аргументов изменился, потому что мы пользуемся обычной композицией (через
точку). Выражение T ηA означает применение функтора T к стрелке ηA. Ведь преобразование это семейство
стрелок, которые параметризованы объектами категории. На языке Haskell это означает применить fmap к
полиморфной функции (функции с параметром).
Также эти свойства можно изобразить графически:
T η
T A
A
µ
T T A
A
T A
T µ
T T T A
A
T T A
µT A
µA
T T A
T A
µA
Категория Клейсли
Если у нас есть монада T , определённая в категории A, то мы можем построить в этой категории кате-
горию специальных стрелок вида A → T B. Эту категорию называют категорией Клейсли.
• Объекты категории Клейсли AT – это объекты исходной категории A.
232 | Глава 15: Теория категорий
• Стрелки в AT это стрелки из A вида A → T B, мы будем обозначать их A →T B
• Композиция стрелок f : A →T B и g : B →T C определена с помощью естественных преобразований
монады T :
f ; T g = f ; T g ; µ
Значок ; T указывает на то, что слева от равно композиция в AT . Справа от знака равно используется
композиция в исходной категории A.
• Тождественная стрелка – это естественное преобразование η.
Можно показать, что категория Клейсли действительно является категорией и свойства операций компо-
зиции и тождества выполнены.
15.5 Дуальность
Интересно, что если в категории A перевернуть все стрелки, то снова получится категория. Попробуйте
нарисовать граф со стрелками, и затем мысленно переверните направление всех стрелок. Все пути исход-
ного графа перейдут в перевёрнутые пути нового графа. При этом пути будут проходить через те же точки.
Сохранятся композиции стрелок, только все они будут перевёрнуты. Такую категорию обозначают Aop. Но
оказывается, что переворачивать мы можем не только категории но и свойства категорий, или утверждения
о категориях, эту операцию называют дуализацией. Определим её:
dual A
=
A
если A является объектом