Fundamentos de Haskell: Estructuras de Datos y Operaciones en Haskell
Fundamentos de Haskell
Este documento explora los conceptos fundamentales de la programación funcional en Haskell, destacando las estructuras de datos y las operaciones clave.
Estructuras de Datos
- Listas: Las listas se definen mediante corchetes y los valores se separan por comas.
Operaciones en Haskell
- init: Toma una lista y devuelve toda la lista excepto su último elemento.
- last: Toma una lista y devuelve su último elemento.
- length: Devuelve el número de elementos de una lista.
- reverse: Pone al revés una lista.
- minimum: Devuelve el elemento más pequeño de una lista.
- maximum: Toma una lista de cosas que se pueden poner en algún tipo de orden y devuelve el elemento más grande.
- head: Devuelve el primer elemento de la lista.
- tail: Toma una lista y devuelve su cola.
- zip: Crea una lista de pares.
Ejemplos de Código
A continuación, se presentan ejemplos de código en Haskell que ilustran las operaciones mencionadas:
-- Ejemplo de función 'init'
initList :: [a] -> [a]
initList xs = init xs
-- Ejemplo de función 'last'
lastList :: [a] -> a
lastList xs = last xs
-- Ejemplo de función 'length'
lengthList :: [a] -> Int
lengthList xs = length xs
-- Ejemplo de función 'reverse'
reverseList :: [a] -> [a]
reverseList xs = reverse xs
-- Ejemplo de función 'minimum'
minimumList :: (Ord a) => [a] -> a
minimumList xs = minimum xs
-- Ejemplo de función 'maximum'
maximumList :: (Ord a) => [a] -> a
maximumList xs = maximum xs
-- Ejemplo de función 'head'
headList :: [a] -> a
headList xs = head xs
-- Ejemplo de función 'tail'
tailList :: [a] -> [a]
tailList xs = tail xs
-- Ejemplo de función 'zip'
zipList :: [a] -> [b] -> [(a, b)]
zipList xs ys = zip xs ys
Conceptos Clave
- Evaluación Perezosa: Consiste en utilizar paso por nombre y recordar valores de argumentos ya calculados para evitar ser recalculados.
- Orden Aplicativo: Se reduce siempre el término más interno.
- Orden Normal: Consiste en seleccionar el término más externo.
- Tupla: Es un grupo de valores de distinto tipo encerrados entre paréntesis y separados por comas.
- Paradigma Funcional: Entorno de desarrollo fácil de usar, intuitivo que puede ayudar con éxito en programación.
Características de Haskell
- Flechas
- Subprocesos
- Datos Definidos Primitivos
- Plantilla Básica
Tipos de Datos
- Booleanos
- Enteros
- Comillas
- Dobles Comillas
- Carácter
Propiedades de Haskell
- Funciones de Alto Orden
- Polimorfismo Paramétrico
- Listas por Comprensión
- Clases de Tipos
Ejemplos de Código Adicional
A continuación, se presentan ejemplos de código en Haskell que ilustran conceptos adicionales:
-- Generadores
hugs>[x*x | x <- [1..10]]
-- Guardas
[e | condición] = if condition then [e] else []
-- Relaciones en Haskell
Hugs> [(x,y)|x<-[1,3,7,8],y<-[1,3,7,8],x