Search code examples
data-structurestuplesrecords

tuples vs records


What is difference between tuples and records?


Solution

  • 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.