В языках программирования и теория типов, продукт типов - это еще один составной тип в структуре. «Операнды» продукта - это типы, а структура типа продукта определяется фиксированным порядком операндов в продукте. Экземпляр типа продукта сохраняет фиксированный порядок, но в противном случае может содержать все возможные экземпляры его примитивных типов данных. Выражением экземпляра типа продукта будет кортеж, и он называется "кортежным типом" выражения. Продукт типов - это прямой продукт двух или более типов.
Если есть только два типа компонентов, это можно назвать «парным типом». Например, если два типа компонентов A и B представляют собой набор всех возможных значений этого типа, тип продукта, записанный A× B, содержит элементы, которые являются парами (a, b), где «a» и «b» являются экземплярами A и B соответственно. Тип пары является частным случаем типа зависимой пары, где тип B может зависеть от экземпляра, выбранного из A.
. Во многих языках типы продуктов имеют форму тип записи, для которого можно получить доступ к компонентам кортежа с помощью метки. В языках с алгебраическими типами данных, как и в большинстве языков функционального программирования, алгебраические типы данных с одним конструктором изоморфны типу продукта.
В соответствии Карри – Ховарда типы продуктов в логике связаны с логическим соединением (И).
Понятие непосредственно распространяется на произведение произвольного конечного числа типов (n-арный тип продукта), и в этом случае оно характеризует выражения, которые ведут себя как кортежи выражений соответствующих типов. Вырожденная форма типа продукта - это тип единицы : это продукт без типов.
В языках программирования с вызовом по значению тип продукта может быть интерпретируется как набор пар, первый компонент которых является значением value в первом типе, а второй компонент - значением во втором типе. Короче говоря, это декартово произведение, которое соответствует продукту в категории типов.
Большинство языков функционального программирования имеют примитивное понятие типа продукта. Например, продукт типа 1,..., тип n записывается как тип 1*
... *
тип n в ML и (
тип 1,
... ,
тип n)
в Haskell. В обоих этих языках кортежи записываются (
v1,
... ,
vn)
, а компоненты кортежа извлекаются с помощью сопоставления с образцом. Кроме того, многие языки функционального программирования предоставляют более общие алгебраические типы данных, которые расширяют оба типа продукта и суммы. Типы продукта - это двойные типы сумм.
Примером типа продукта является тип вектора в векторном пространстве или алгебры над полем : тип является произведением числового типа и типа направления. Так, например, брошюра для Международная система единиц начинается в разделе 1.1, где говорится: «Значение количества обычно выражается как произведение числа на единицу», а также представляет собой произведение единиц Ньютона и метра с обозначение произведения математики: Ньютон метр (Н · м или Н · м). Это правильно указывает на характер векторного пространства единиц СИ над абелевой группой измерений при умножении, а также на поле вещественные числа - единицы СИ образуют алгебру над полем.