52700.fb2 Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 265

Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 265

C × A

f

curry( f )

( curry( f ) , id)

BA

BA × A

B

Давайте разберёмся, что это всё означает. По смыслу стрелка curry( f) это каррированная функция двух

аргументов. Вспомните о функции curry из Haskell. Диаграмма говорит о том, что если мы каррированием

функции двух аргументов получим функцию высшего порядка C → BA, а затем с помощью функции eval

получим значение, то это всё равно, что подставить два значения в исходную функцию. Запись ( curry( f) , id)

означает параллельное применение двух стрелок внутри пары:

( f, g) : A × A → B × B ,

f : A → B, g : A → B

Так применив стрелки curry( f) : C → BA и id : A → A к паре C × A, мы получим пару BA × A.

Применение здесь условное мы подразумеваем применение в функциональной аналогии, в теории категорий

происходит связывание пар объектов с помощью стрелки ( f, g).

Интересно, что и экспоненту можно получить как конечный объект в специальной категории. Пусть есть

категория A и в ней определено произведение объектов A и B. Построим категорию, в которой объектами

являются стрелки вида:

C × A → B

где C – это произвольный объект исходной категории. Стрелкой между объектами c : C × A → B и

d : D × A → B в этой категории будет стрелка f : C → D из исходной категории, такая, что следующая

диаграмма коммутирует:

C

C × A

f

c

( f, id)

D

D × A

B

Если в этой категории существует конечный объект, то он является экспонентой. А функция curry явля-

ется анаморфизмом для экспоненты.

238 | Глава 15: Теория категорий

15.9 Краткое содержание

Теория категорий изучает понятия через то как эти понятия взаимодействуют друг с другом. Мы забываем

о том, как эти понятия реализованы, а смотрим лишь на свойства связей.

Мы узнали что такое категория. Категория это структура с объектами и стрелками. Стрелки связывают

объекты. Причём связи могут соединятся. Также считается, что объект всегда связан сам с собой. Мы узнали,

что есть такие категории, в которых сами категории являются объектами, а стрелки в таких категориях мы

назвали функторами. Также мы узнали, что сами функторы могут стать объектами в некоторой категории,

тогда стрелки в этой категории мы будем называть естественными преобразованиями.

Мы узнали что такое начальный и конечный объект и как с помощью этих понятий можно определить

сумму и произведение типов. Также мы узнали как в теории категорий описываются функции высших по-

рядков.

15.10 Упражнения

• Проверьте аксиомы категории (ассоциативность и тождество) для категории функторов и категории

естественных преобразований.

• Изоморфизмом называют такие стрелки f : A → B и g : B → A, для которых выполнено свойство: