Tupla
# Tupla

En matemáticas, una tupla o upla es una lista (secuencia) ordenada y finita de elementos.

* Una n-tupla se define inductivamente mediante la construcción de un par ordenado.
* Sólo hay una tupla 0, denominada tupla vacía.

Los matemáticos suelen escribir tuplas enumerando los elementos entre paréntesis "" y separados por comas; por ejemplo, (2, 7, 4, 1, 7) denota una tupla de 5.

A veces se utilizan otros símbolos para rodear los elementos, como corchetes "" o corchetes angulares "⟨⟩". Las llaves "" se utilizan para especificar matrices en algunos lenguajes de programación, pero no en expresiones matemáticas, ya que son la notación estándar para conjuntos.

El término tupla puede aparecer a menudo cuando se habla de otros objetos matemáticos, como los vectores.

En informática, las tuplas se presentan de muchas formas; La mayoría de los lenguajes de programación funcional tipificados implementan tuplas directamente como tipos de productos, estrechamente asociados con tipos de datos algebraicos, coincidencia de patrones y asignación de des-estructuración.

Muchos lenguajes de programación ofrecen una alternativa a las tuplas, conocidas como tipos de registro, que presentan elementos desordenados a los que se accede por etiqueta; Algunos lenguajes de programación combinan tipos de productos de tuplas ordenadas y tipos de registros desordenados en una única construcción, como en las estructuras C y los registros Haskell.

Las bases de datos relacionales pueden identificar formalmente sus filas (registros) como tuplas.

Las tuplas también ocurren en álgebra relacional, al programar la web semántica con Resource Description Framework (RDF), en lingüística y en filosofía.

## Origen del concepto

El término tupla se generó sencillamente de una generalización de la secuencia siguiente: dupla, tripla, cuádrupla, quíntupla, ... n-tupla.

* Una tupla de longitud n se describe generalmente como una n-tupla.
* Una 2-tupla, por ejemplo, se denomina un par o dupla;
* una 3-tupla una tripla o tripleta (en Hispanoamérica también se usa terna o tríada).

El prefijo n puede ser por generalización cualquier número entero positivo; se puede, por ejemplo, denominar un cuaternión mediante la representación de una 4-tupla, y continuar generando nombres sucesivamente, tales como una octupla, pero muchos matemáticos prefieren la denominación rápida y sencilla de escribir una "8-tupla" incluso si se pronunciara como "octupla".

Aunque es un término utilizado habitualmente dentro de la matemática y la programación, la palabra «tupla» no está en el diccionario de la Real Academia Española, ni como sufijo ni como término independiente.

## Definiciones formales

Las principales propiedades que distinguen una tupla de, por ejemplo, un conjunto, son que en dicha tupla:

* Un objeto puede contener internamente (por agregación) a otros objetos.
* Los objetos aparecen obligatoriamente representados en un orden dado.

Es de notar que la primera de las características distingue de lo que se denomina un multiconjunto y la segunda de los que se denomina un conjunto ordenado. Esto se puede formalizar dando la siguiente regla de identidad para dos n-tuplas:

    $(a_{1},a_{2},\ldots ,a_{n})=(b_{1},b_{2},\ldots ,b_{n})\Leftrightarrow a_{1}=b_{1},{\text{ }}a_{2}=b_{2},{\text{ }}\ldots ,{\text{ }}a_{n}=b_{n}$

Otra forma de formalizar tuplas es mediante asociación biyectiva entre la definición de una tupla y una construcción más primitiva en la teoría de conjuntos tal y como pares ordenados. Por ejemplo, una n-tupla (con n> 2) se puede definir como un par ordenado de su primera entrada y (n−1)-tupla que contenga el resto de las entradas, de tal forma que:

    $(a_{1},a_{2},\ldots ,a_{n})=(a_{1},(a_{2},(\ldots ,(a_{n}))))$

Empleando la definición más corriente dentro de la teoría de conjuntos para un par ordenado y dejando que el conjunto vacío represente la tupla vacía, se puede obtener un resultado correcto empleando una definición por inductiva:

* La 0-tupla (por ejemplo la tupla vacía) se representa por $\varnothing$.
* Si x es una n-tupla entonces $\,\{\{a\},\{a,x\}\}$ es una (n + 1)-tupla.

Empleando esta definición, la 3-tupla $\,(1,2,2)$ podría ser:

    $\,(1,(2,(2,)))=(1,(2,\{\{2\},\{2,\varnothing \}\}))=(1,\{\{2\},\{2,\{\{2\},\{2,\varnothing \}\}\}\})=\{\{1\},\{1,\{\{2\},\{2,\{\{2\},\{2,\varnothing \}\}\}\}\}\}$

Existe una similitud importante aquí con la forma en que se describen objetos en algunos lenguajes informáticos, tales como Lisp en los que generalmente se emplea un par ordenado, y se emplea esta abstracción para iterar todos los elementos de la estructura del n-tupla, para ello se procede de la siguiente forma:

* Un símbolo especial, tal y como NIL representa a una lista vacía
* Si X es una lista y A es un valor arbitrario, entonces el par (A, X) representa una lista con la cabecera (es decir el primer elemento) A y la cola (es decir el resto de la estructura) X.

## Usos

### Ciencias de la computación

En las ciencias de la computación una tupla puede tener dos significados distintos; Generalmente en los lenguajes de programación funcional y en otros lenguajes de programación, una tupla es un objeto que bien puede tener datos o diversos objetos, de forma similar a una tupla definida matemáticamente.

Una definición más formal del anterior párrafo sería: Conjunto de elementos de distinto tipo que se guardan de forma consecutiva en memoria.

En algunos lenguajes y especialmente en la teoría de bases de datos, una tupla se define como una función finita que mapea (asocia unívocamente) los nombres con algunos valores; Su propósito es el mismo que se definió en las matemáticas.

   Un pequeño ejemplo puede ilustrar esto:
   * ( jugador: "Luis", puntuación: 25 )

   En este caso se trata de una función que mapea el campo "jugador" con la cadena "Luis" y el campo "puntuación" al número entero 25.
   Es de notar que el orden de los componentes no es relevante, de esta forma la misma tupla puede ser reescrita como:
   * ( puntuación: 25, jugador: "Luis" ).

En un modelo relacional tal y como se define en las tuplas, se suele representar una proposición simple, en este caso existe un jugador con el nombre "Luis" y que posee una puntuación de 25.

En los lenguajes de programación las tuplas se suelen usar para formar estructuras de datos; Por ejemplo, lo siguiente podría ser una definición de una estructura de datos para una lista enlazada:

   ( value: 16, previous-node: 1174782, next-node: 1174791 )

### Lenguajes de marcado

Se suele emplear las tuplas en la definición de ciertos elementos en los lenguajes de marcado, tales como XML. En particular forma parte muy importante en parte del diseño de Taxonomías en el lenguaje XBRL para describir informes financieros.

### Cálculo relacional

Las tuplas encuentran cabida en el estudio teórico de las bases de datos sobre todo en el campo del cálculo relacional ya que proporcionan una notación básica para formular la definición de la relación en términos de las relaciones de la base de datos. En el cálculo relacional se emplea el cálculo orientado a tuplas, frente al orientado a dominio. Se emplea muy a menudo en la definición a gran nivel de las definiciones de los pares atributo-valor.

