Трансформатор монад - это заостренный эндофунктор в категории монад. В чем проблема?
Вот еще некоторые подробности:
Начнем с некоторой категории, в которой мы рассматриваем те эндофункторы M, которые являются монадами. Все эти монады M образуют категорию, морфизмы которой являются естественными преобразованиями M -> M ', удовлетворяющими законам морфизмов монад.
Трансформатор монад - это заостренный эндофунктор в этой категории монад. Что такое эндофунктор T в этой категории монад? Этот эндофунктор является отображением монады M в монаду T (M) вместе с отображением любого морфизма монад M - ›M 'в морфизм монад T (M) -› T (M').
Эндофунктор T указывается, если существует естественное преобразование из тождественного эндофунктора (Id) в T.
Эндофунктор идентичности - это карта идентичности монад и морфизмов монад. Естественное преобразование Id ~ ›T определяется своими компонентами на всех монадах M. Его компонентой в M является морфизм монад M -> T (M). Кроме того, должен существовать закон естественности (монадическая естественность), который гласит, что для любых монад M и M 'и любого морфизма монад M -> M' диаграмма, состоящая из M, M ', T (M), T ( M ') коммутирует.
Эти данные более или менее совпадают с обычными данными, необходимыми для преобразователя монад. Требуемый морфизм монады M -> T (M) - это подъем чужой монады M в преобразованную монаду.
Конструкция также включает функцию подъема (это действие эндофунктора T на морфизмы монад), которая поднимает морфизмы монад M - ›M 'на T (M) -› T (M').
Если мы рассмотрим образ тождественной монады, T (Id), это должна быть какая-то другая монада. Назовем это базовой монадой преобразователя и обозначим через B. Тогда у нас есть морфизм монады B ~> T (M) для любого M. Это поднятие базовой монады на преобразованную монаду.
Однако это определение исключает нефункториальные преобразователи монад, такие как монада продолжения и монада кодовой плотности.
Распределительные законы применимы только к определенным преобразователям монад. Есть два типа преобразователей, в которых существуют законы распределения: для этих преобразователей составляющая в точке M естественного преобразования Id ~ ›T задается либо M -› B∘M, либо M - ›M∘B. Но у других монад есть преобразователи, которые не являются композициями функторов, и для них нет законов распределения.
Более подробная информация представлена в главе 14 будущей книги «Наука функционального программирования»: https://github.com/winitzki/sofp
person
winitzki
schedule
19.05.2021