Думаю, с чего начать, с комонады или с сопряженных... давайте-ка сначала пример с комонадой.
Итак, в предыдущей серии мы брали категории
C=
Set и
D=
Set×Set - множества и пары множеств, и два функтора,
Δ(X) = (X,X)
и
Π((X,Y)) = X×Y
.
Первый функтор - диагональ, он множеству сопоставляет пару, состоящую из двух экземпляров оного, а второй паре множеств сопоставляет декартово произведение; и эти функторы были сопряжены,
Δ ⊣Π
.
У функтора
Δ
на самом деле есть не только правый сопряженный,
Δ ⊣Π
, но и левый,
Σ ⊣Δ
. Что это за функтор такой? Давайте не надеятся на чудо, а просто его построим. Нам нужно, чтобы по
(f1,f2): (Y1,Y2) &: ; (X,X)
мы могли взаимно-ознозначно получать
&alphal(f1,f2): Σ(Y1,Y2) → X
.
Напомню, что стрелка
(f1,f2)
в
Set×
Set - это просто пара обычных стрелок (функций) в
Set.
Заданы две функции,
f1: Y1 → X
и
f1: Y1 → X
. Что это нам даёт? Это нам даёт, взаимно-однозначно, функцию из непересекающегося объединения:
Y1 ∐ Y2 → X
.
Так что наш функтор
Σ
- это просто объединение двух компонент. Ну а так как он левый сопряженный к
Δ
, то композиция
ΔΣ
, которая для множества
X
возвращает
X ∐X
, является комонадой.
Думаю, понятно как определить
ε: X.т∐X → X
; а
δ: X ∐ X → X ∐ X ∐ X ∐ X
, как и во вчерашнем примере, складывает первую компоненту слева в первую компоненту справа, а последнюю - в последнюю.
Ну а теперь к монадам и сопряженным функторам.
Вот давайте вообще начнём с монады
T:
C →
C, со всеми её монадическими законами (единица, умножение, ассоциативность умножения и единичность единицы).
Определим
алгебру над монадой: это объект
A
и стрелка
a: T(A) → A
, обладающая правильными свойствами. А именно:
Я тут для простоты выбросил много скобок... ну что вы хотите, я же скальшик а не лиспщик.
Категория алгебр над монадой
T
в категории
C обозначается
CT
.
Из алгебр, понятное дело, есть забывающий функтор
UT
. в категорию
C - просто забудем, что есть какое-то действие. К этому забывающему функтору
UT
имеется левый сопряженный функтор
FT:
C →
CT
, строящий по объекту
X
свободную алгебру, которая на самом деле выглядит так:
μX: TTX → TX
.
Откуда сопряженность,
FT ⊣ FT
? Если есть алгебра
b: TB →B
, и
f: A → B
, то имеет место коммутативная диаграмма
- которая всё и объясняет.
Итак, взяв любую сопряженную пару, можно построить монаду, а по монаде - сопряженную пару
(свободный, забывающий). Очевидно, что монада, соответствующая этой паре, и есть исходная монада; но одной монаде могут соответствовать много разных сопряженных пар (их целая категория); пара
(свободный, забывающий) - предельный случай. Вот другой предельны случай - категория Клейсли.
Возьмём монаду
T:
C →
C и построим на её основе новую категорию,
CT
, состоящую из тех же объектов, что и исходная категория, но с добавлением стрелок. А именно, всякая стрелка
f: :X → TY
в
C будет стрелкой
f: :X → Y
в
CT
. (Это, к примеру, если у нас монада
Option
, то теперь стрелками будут все частичные функции.) Композиция
f;g
определяется через

; все стрелки исходной категории превращаются в

.
Так что имеется вложение
IT:
C →
CT
; и к нему я хочу построить левый сопряженный, чтобы было
KT ⊣ IT
.
Эту сопряженность можно выразить как
f: ITX → Y | <====> | ?: X → KTY |
но, по определению
CT
, это всё равно что задать
f: X → TY | <====> | ?: X → KTY |
Определим
KTY = TY
- и на этом всё.
Для монады
Option
в множествах категорией Клейсли будет категория множеств и частичных функций, а категорией алгебр - категория множеств с выделенной точкой.
Для монады
X2
в множествах категорией Клейсли будет категория множеств и
пар функций, а категорией алгебр - категория множеств с заданной бинарной операцией.
Сказать мне вроде на эту тему больше нечего, если не подскажут, чего ещё добавить. Какие-нибудь специфические монады с комонадами?