jueves, 20 de febrero de 2014

TIPOS DE DATOS

TUPLAS
  •      Pueden agrupar elementos de diferentes tipos, pero su tamaño es fijo.
  •  Así, un registro de personas puede contener nombres (cadenas), si alguien es masculino o no (booleano) y fechas de nacimiento (enteros).
  • Son utilizadas cuando sabes exactamente cuántos valores tienen que ser combinados y su tipo depende de cuantos componentes tengan y del tipo de estos componentes.
  • Se denotan con paréntesis y sus valores se separan con comas, pueden contener una combinación de valores de distintos tipos.
  • Son mucho más rígidas que las listas ya que para cada tamaño tienen su propio tipo, así que no podemos escribir una función general que añada un elemento a una tupla: tenemos que escribir una función para añadir duplas, otra función para añadir triplas, otra función para añadir cuádruplas, etc.

Ejemplos:
Si queremos representar el nombre y la edad de alguien en Haskell, podemos utilizar la tripla: ("Christopher", "Walken", 55). Como hemos visto en este ejemplo las tuplas también pueden contener listas.

Una de las tuplas más simples que se puede imaginar es:
Prelude> :t (True, 'H')
(True, 'H') :: (Bool, Char)

es decir, una tupla compuesta por un booleano y un caracter. Sin embargo, los elementos de las tuplas también pueden ser compuestos, como un String:
Prelude> :t (True, "Hola")
(True, "Hola") :: (Bool, [Char])

o inclusive el componente de una tupla puede ser otra tupla:
Prelude> :t (False, ('H', "ola"))
(False, ('H', "ola")) :: (Bool, (Char, [Char]))

También podemos tener tuplas de más de dos componentes
Prelude> :t (True, 'H', [False])
(True, 'H', [False]) :: (Bool, Char, [Bool])

es decir, un booleano, un caracter y una lista de booleanos.
Ejemplo en el que se combina todo lo anterior:
Prelude> :t ([True, False, True], "Chau", [(True, "True"), (False, "False")])
([True, False, True], "Chau", [(True, "True"), (False, "False")])
  :: ([Bool], [Char], [(Bool, [Char])])


1 comentario:

  1. Revisado, Buena información, un que otro error pero lo demás esta muy bien.

    ResponderEliminar