Fundamentos de Haskell: Estructuras de Datos y Operaciones en Haskell

Informática3,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

Descargar

PDF Word HTML