Обобщенный алгебраический тип данных
-
Обзор обобщенных алгебраических типов данных (GADT)
- GADT — это обобщение параметрических алгебраических типов данных в функциональном программировании.
- Конструкторы данных GADT могут предоставлять явные экземпляры ADT в качестве возвращаемых значений.
- GADT позволяют определять функции с более продвинутым типом поведения.
- В настоящее время GADT реализованы в компиляторе GHC как нестандартное расширение.
- OCaml поддерживает GADT с версии 4.00.
-
История и реализация
- Ранние версии GADT были описаны в 1994 году и основаны на сопоставлении с образцом.
- GADT были независимо введены в 2003 году и эквивалентны друг другу.
- GADT похожи на индуктивные типы данных, но без ограничения положительности.
- Sulzmann, Wazny & Stuckey представили расширенные GADT с экзистенциальными типами данных и ограничениями класса типов.
- Вывод типа в GADT неразрешим без аннотаций программиста, а функции GADT не допускают основных типов.
-
Приложения GADT
- GADT используются для универсального программирования, моделирования языков программирования, поддержки инвариантов в структурах данных и моделирования объектов.
- GADTs позволяют создавать абстрактный синтаксис более высокого порядка типобезопасным способом.
-
Дальнейшее чтение и внешние ссылки
- Ссылки на дополнительные ресурсы и статьи о GADT доступны в конце статьи.
Полный текст статьи: