Контейнер (теория типов) - Container (type theory)

В теория типов, контейнеры являются абстракциями, которые допускают различные "типы коллекций", такие как списки и деревья, чтобы быть представленными единообразно. А (унарный ) контейнер определяется типом формы S и семейство типов позиции P, индексируемый S. расширение контейнера - это семейство зависимых пар, состоящих из формы (типа S) и функции от позиций этой формы до типа элемента. Контейнеры можно рассматривать как канонические формы для типов коллекций.[1]

Для списков тип формы - это натуральные числа (включая ноль). Соответствующие типы позиций - это типы натуральных чисел меньше фигуры для каждой фигуры.

Для деревьев тип формы - это тип деревьев единиц (то есть деревья, в которых нет информации, а есть только структура). Соответствующие типы позиций изоморфны типам допустимых путей от корня к конкретным узлам на фигуре для каждой формы.

Обратите внимание, что натуральные числа изоморфны спискам единиц. В общем, тип формы всегда будет изоморфен исходному неуниверсальному семейству типов контейнера (список, дерево и т. Д.), Примененному к модулю.

Одна из основных причин введения понятия контейнеров - поддержка общее программирование в зависимо типизированный параметр.[1]

Категориальные аспекты

Расширение контейнера - это эндофунктор. Требуется функция грамм к

Это эквивалентно знакомому карта g в случае списков и делает нечто подобное для других контейнеров.

Проиндексированные контейнеры

Проиндексированные контейнеры (также известный как зависимые полиномиальные функторы) являются обобщением контейнеров, которые могут представлять более широкий класс типов, например векторы (списки размеров).[2]

Тип элемента (называемый тип ввода) индексируется по форме и положению, поэтому он может варьироваться по форме и положению, а также по расширению (называемому тип вывода) также индексируется по форме.

Смотрите также

Рекомендации

  1. ^ а б Майкл Эбботт; Торстен Альтенкирх; Нил Гани (2005). «Контейнеры: конструирование строго положительных типов». Теоретическая информатика. 342 (1): 3–27. Дои:10.1016 / j.tcs.2005.06.002.
  2. ^ Торстен Альтенкирх, Нил Гани, Питер Хэнкок, Конор МакБрайд, и Питер Моррис. «Проиндексированные контейнеры» (PDF). Неопубликованная рукопись. Получено 2008-10-30. Цитировать журнал требует | журнал = (помощь)CS1 maint: несколько имен: список авторов (связь)

внешняя ссылка