Fundamentos de Haskell: Estructuras de Datos y Operaciones en Haskell

Clasificado en Informática

Escrito el en español con un tamaño de 3,61 KB

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

Entradas relacionadas: