ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Rouse

rouse127Ensayo10 de Abril de 2014

538 Palabras (3 Páginas)231 Visitas

Página 1 de 3

De alguna forma, las tuplas son parecidas a las listas. Ambas son una forma de almacenar

19

Couldn't match expected type `(t, t1)'

against inferred type `(t2, t3, t4)'

In the expression: (8, 11, 5)

In the expression: [(1, 2), (8, 11, 5), (4, 5)]

In the definition of `it': it = [(1, 2), (8, 11, 5), (4, 5)]

ghci> fst (8,11)

8

ghci> fst ("Wow", False)

"Wow"

varios valores en un solo valor. Sin embargo, hay unas cuantas diferencias fundamentales. Una

lista de números es una lista de números. Ese es su tipo y no importa si tiene un sólo elemento o

una cantidad infinita de ellos. Las tuplas sin embargo, son utilizadas cuando sabes exactamente

cuantos valores tienen que ser combinados y su tipo depende de cuantos componentes tengan y

del tipo de estos componentes. Las tuplas se denotan con paréntesis y sus valores se separan con

comas.

Otra diferencia clave es que no tienen que ser homogéneas. Al contrario que las listas, las tuplas pueden contener una

combinación de valores de distintos tipos.

Piensa en como representaríamos un vector bidimensional en Haskell. Una forma sería utilizando listas. Podría funcionar.

Entonces, ¿si quisiéramos poner varios vectores dentro de una lista que representa los puntos de una figura bidimensional?

Podríamos usar algo como [[1,2],[8,11],[4,5]]. El problema con este método es que también podríamos hacer cosas

como [[1,2],[8,11,5],[4,5]] ya que Haskell no tiene problemas con ello, sigue siendo una lista de listas de números pero

no tiene ningún sentido. Pero una tupla de tamaño 2 (también llamada dupla) tiene su propio tipo, lo que significa que no puedes

tener varias duplas y una tripla (una tupla de tamaño 3) en una lista, así que vamos a usar éstas. En lugar de usar corchetes

rodeando los vectores utilizamos paréntesis: [(1,2),(8,11),(4,5)]. ¿Qué pasaría si intentamos crear una forma como

[(1,2),(8,11,5),(4,5)]? Bueno, obtendríamos este error:

Nos está diciendo que hemos intentado usar una dupla y una tripla en la misma lista, lo cual no esta permitido ya que las

listas son homogéneas y un dupla tiene un tipo diferente al de una tripla (aunque contengan el mismo tipo de valores). Tampoco

podemos hacer algo como [(1,2),("uno",2)] ya que el primer elemento de la lista es una tupla de números y el segundo es

una tupla de una cadena y un número. Las tuplas pueden ser usadas para representar una gran variedad de datos. Por ejemplo,

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.

Utilizamos la tuplas cuando sabemos de antemano cuantos componentes de algún dato debemos tener. Las tuplas 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.

Mientras que existen listas unitarias, no existen tuplas unitarias. Realmente no tiene mucho sentido si lo piensas. Una tupla

unitaria sería simplemente el valor que contiene y no nos aportaría nada útil.

Como las listas, las tuplas pueden ser comparadas si sus elementos pueden ser comparados. Solo que no podemos

comparar dos tuplas de diferentes tamaños mientras que si podemos comparar dos listas de diferentes tamaños. Dos funciones

útiles para operar con duplas son:

fst toma una

...

Descargar como (para miembros actualizados) txt (4 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com