Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В языках программирования и теории типов , продукт из видов другой, усугубляются, типа в структуре. «Операнды» продукта являются типами , а структура типа продукта определяется фиксированным порядком операндов в продукте. Экземпляр типа продукта сохраняет фиксированный порядок, но в остальном может содержать все возможные экземпляры его примитивных типов данных . Выражение экземпляра типа продукта будет кортежем и называется «кортежным типом» выражения. Типовой продукт - это прямой продукт двух или более типов.

Если имеется только два типа компонентов, это можно назвать «парным». Например, если два типа компонентов A и B представляют собой набор всех возможных значений этого типа, тип продукта, записанный A × B, содержит элементы, которые являются парами (a, b), где «a» и «b» являются экземплярами A и B соответственно. Тип пары представляет собой частный случай зависимого типа пары , где типа Б может зависеть от экземпляра выбран из A .

Во многих языках типы продуктов имеют форму типа записи , для которой можно получить доступ к компонентам кортежа по метке . В языках с алгебраическими типами данных , как и в большинстве языков функционального программирования , алгебраические типы данных с одним конструктором изоморфны типу продукта.

В соответствии Карри – Ховарда типы продуктов связаны логической связью (И).

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

В языках программирования с вызовом по значению тип продукта можно интерпретировать как набор пар, первый компонент которых является значением в первом типе, а второй компонент - значением во втором типе. Короче говоря, это декартово произведение, которое соответствует продукту в категории типов.

Большинство языков функционального программирования имеют примитивное представление о типе продукта. Например, продукт типа 1 , ..., типа n записывается как тип 1* ... *тип n в ML и (тип 1, ... ,тип n) в Haskell . В обоих этих языках кортежи записываются (v 1, ... ,v n,) а компоненты кортежа извлекаются путем сопоставления с образцом . Кроме того, многие языки функционального программирования предоставляют более общиеалгебраические типы данных , которые расширяют типы произведений и сумм . Типы продукта являются двойными типам сумм.

См. Также [ править ]

Ссылки [ править ]