Translate

sábado, 10 de octubre de 2020

Listas en Haskell


Una estructura de datos clave en todo lenguaje es la lista

Una lista es un valor único que contiene varios otros valores.

En haskell una lista esta representada por elementos se escriben entre paréntesis cuadrados, separados por comas.

['3', 'a']

[2.718, 50.0, -1.0]

Una función solo puede devolver un resultado. Sin embargo, las listas le permiten empaquetar varios valores en un objeto, que puede ser devuelto por una función.

Aquí hay una función (minmax) que devuelve el menor y el mayor de dos números:

minmax = \ x y -> [min x y, max x y]

minmax 3 8 -> [3,8]

minmax 8 3 -> [3,8]


Los elementos de una lista se evalúan perezosamente, de esta forma se pueden hacer listas infinitas. 

Puedes escribir una lista constante

mylist = [2,4,6,8]

Los elementos pueden ser expresiones y se evalúan solo cuando se utilizan. Suponga que define:

respuesta = 42

lista = [7, respuesta + 1, 7 * 8]

Si imprimimos esto : 

lista -> [7, 43, 56]

Pero mientras no se acceda a la expresión, no se evaluará.

El operador (++) toma dos listas existentes y retorna una nueva que contiene todos los elementos.

El operador se pronuncia append y se escribe como dos caracteres + consecutivos.

[23, 29] ++ [48, 41, 44] -> [23, 29, 48, 41, 44]

La longitud del resultado es siempre la suma de las longitudes de las listas originales.

Si xs es una lista, entonces [] ++ xs = xs = xs ++ [].