Начальная алгебра
Нача́льная а́лгебра — в математике (в первую очередь в теории категорий) начальный объект категории F-алгебр для заданного эндофунктора F.
Пример[править | править код]
Пусть эндофунктор отображает в . В этом случае множество натуральных чисел совместно с функциями , где и — функции, смысл которых понятен из их наименования; является начальной -алгеброй. Начальность (универсальное свойство в этом случае) несложно установить — уникальный гомоморфизм в произвольную -алгебру , для элемента , и — функция над ; является функцией, отображающей натуральное число в , т. е. — -арное применение функции к аргументу .
Использование в теории программирования[править | править код]
Различные конечные структуры данных, используемые в программировании, такие как списки и деревья, могут быть получены в виде начальных алгебр определённых эндофункторов. Поскольку может существовать несколько начальных алгебр для заданного эндофунктора, они уникальны с точностью до изоморфизма, который неформально является заметным свойством структур данных и может быть адекватно выражен при помощи определения его в виде начальной алгебры.
Для получения типа — списка над элементами множества , необходимо иметь следующие операции конструирования списка:
Преобразованные в функции они выглядят следующим образом:
- ,
что делает эту -алгебру эндофунктора отображающей в . Это, фактически, и является начальной -алгеброй. Первоначально основана на функции, известной как foldr
в функциональном программировании в таких языках программирования как Haskell и ML.
Таким же образом бинарные деревья с элементами в листьевых вершинах могут быть получены в виде начальной алгебры.
- .
Типы данных, получаемые подобным образом, называются алгебраическими типами данных.