タプル
型システム的には、代数的データ型でいう直積型そのものであり、C#、C++、Haskell、ML、Python、Scala、TypeScript といった多くのプログラミング言語にタプル型がある。いくつかは (x, y) といったような構文でタプル型の値を直接記述できる。
動的な型付けを持つ言語では、コンテナ型を使うことで済まさせている場合もある。一方でPythonのように、長さを後から変えられないばかりでなく要素を変えることもできないというような、タプル専用のオブジェクトを用意している場合もある。
静的な型付けを持つ言語の場合、リスト型やコンテナ型の要素は、基本的になんらかの「同じ」型でなければならないので、それらの集積型をタプルの目的に流用することは不可能であり、そのためこの節の冒頭のようにタプルないし同等のものをサポートしていることが多い。一方で、簡易に定義できるデータクラスのようなクラスを用意して同等の目的に応えるKotlinのように、タプル型を提供していない言語もある。
TypeScript 1.3 から対応した。
C#言語におけるタプル(System.Tupleクラス)は.NET Framework 4.0からサポートされた総称型のコンテナのひとつ。CLIで定義されたクラスであるためVisual Basic .NETでも同様に使用可能である。
それぞれの値の取り出しは、Item1, Item2, ... にアクセスすることで行える。Pythonと違い、Tuple型で返したからといって複数の戻り値を返す関数とはならない。
他にも同様の総称型を持つ言語では、同様にしてタプルを使えるかもしれない。
なお、C#7.0からサポートされたタプル構文では、それ以前に存在していたSystem.Tupleクラス(参照型)ではなく、新たに実装されたSystem.ValueTuple構造体(値型)が使用されるようになっている。これにより使用時のインスタンス化が不要となった。
その他、各タプルフィールドへの命名(名前付きタプル)、分解構文(Deconstruct())を介した複数の戻り値の受け取りや、タプルそのものを直接ジェネリックの型引数として宣言することが可能となるなど、言語仕様の一部として統合された形で扱えるようになった。