Both are product types which let you build types from multiple simpler types. Some languages treat tuples as a kind of record.
Definitions
A tuple is an ordered group of elements, like (10, 25).
A record is typically a group of named elements like { "x": 10, "y": 25 }
where the value has two fields labelled x
and y
and the value of field x
is 10
.
Etymology
The word “tuple” comes from the common “-tuple” suffix on “quintuple”, “sextuple”, “septuple”, “octuple” which mean groups of 5, 6, 7, and 8 respectively.
The word “record” comes from data tables. You can think of all possible tuples with x
and y
fields as a table where columns correspond to fields and rows collect all the fields for a particular record instance.
value address field x field y
0xABCD 10 25
0x1234 42 "xyz"
Equivalence of product types
You can treat a tuple as a kind of record, where the index of an element in a tuple is its name within the equivalent record, so (10, 25)
is { "0": 10, "1": 25 }
. I believe Standard ML and related languages use records as the basic unit of type conjunction (algebraic data types provide type disjunction) and treat tuples as a kind of record in this way.