Любая программа — это формальное описание решения некоторой задачи реального мира. Как часть этого решения конкретные данные тоже должны быть формализованы таким образом, чтобы программа могла проводить вычисления. Для облегчения процесса формализации задачи в языки программирования включены наборы различных типов данных. Но так как ни один разработчик языка не сможет предвидеть всех возможных применений последнего, набор типов данных неизбежно окажется неполным.
Основным атрибутом переменной является ее тип или множество значений, которые может принимать переменная. Кроме того, существует набор операторов, который может оперировать с переменной данного типа.
Так как программы все более усложняются, требуются все более новые типы данных для того, чтобы моделировать задачи реального мира. Новые типы данных должны создаваться программистом на основе уже существующих.
Переменные, объявленные как элементарные типы данного языка, называются скалярными переменными, а переменные, состоящие из наборов существующих типов данных, называются агрегативными переменными. Из агрегативных переменных можно строить новые типы данных, для работы с которыми создаются специальные операторы. Цель наших исследований — понять, по какой концепции строятся абстрактные (определенные пользователем) типы данных из агрегативных структур.