Введение

В компьютерном программировании, особенно в функциональном программировании и теории типов, алгебраический тип данных (ADT) — это вид составного типа, то есть тип, формируемый путем объединения других типов. Два распространенных класса алгебраических типов — это типы-произведения (то есть кортежи и записи) и типы-суммы (то есть типы с метками или непересекающиеся объединения, копроизведения или варианты). Значения типа-произведения обычно содержат несколько значений, называемых полями. Все значения этого типа имеют одинаковую комбинацию типов полей. Множество всех возможных значений типа-произведения является теоретико-множественным произведением, то есть декартовым произведением множеств всех возможных значений его типов полей. Значения типа-суммы обычно группируются в несколько классов, называемых вариантами. Значение типа-варианта обычно создается с помощью квазифункциональной сущности, называемой конструктором. Каждый вариант имеет свой конструктор, который принимает определенное количество аргументов определенных типов. Множество всех возможных значений типа-суммы является теоретико-множественным объединением, то есть непересекающимся объединением множеств всех возможных значений его вариантов. Перечисляемые типы — это особый случай типов-сумм, в которых конструкторы не принимают аргументов, поскольку для каждого конструктора определено ровно одно значение. Значения алгебраических типов анализируются с помощью сопоставления с образцом, которое идентифицирует значение по его конструктору или именам полей и извлекает содержащиеся в нем данные.

История

Алгебраические типы данных были введены в Hope, небольшом функциональном языке программирования, разработанном в 1970-х годах в Эдинбургском университете.