Выбрать главу

думали понятие естественного преобразования, а затем, чтобы дать ему обоснование было придумано поня-

тие функтора, и наконец для того чтобы дать обоснование функторам были придуманы категории. Катего-

рии содержат объекты и стрелки, для стрелок есть операция композиции. Также для каждого объекта есть

тождественная стрелка. Функторы являются стрелками в категории, в которой объектами являются другие

категории. А естественные преобразования являются стрелками в категории, в которой объектами являются

функторы. Получается такая иерархия структур.

15.4 Монады

Монадой называют эндофунктор T : A → A, для которого определены два естественных преобразования

η : I → T и µ : T T → T и выполнены два свойства:

T ηA ; µA = idTA

T µA ; µTA = µTTA ; µA

Преобразование η – это функция return, а преобразование µ – это функция join. В теории категорий в

классе Monad другие методы. Перепишем эти свойства в виде функций Haskelclass="underline"

join . fmap return

= 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 является объектом

dual x

=

x

если x обозначает стрелку

dual ( f : A → B) = dual f : B → A

A и B поменялись местами

dual ( f ; g)

=

dual g ; dual f

f и g поменялись местами

dual ( idA)

=

idA

Есть такое свойство, если и в исходной категории A выполняется какое-то утверждение, то в перевёр-

нутой категории Aop выполняется перевёрнутое (дуальное) свойство. Часто в теории категорий из одних