Entradas

Mostrando entradas de agosto, 2026

Mónadas (Monads) en Haskell

Imagen
Si nos vamos al concepto tradicional de lo que es una mónada en Haskell tendremos lo siguiente: "Una mónada es un patrón de diseño que estructura cálculos en una secuencia de pasos y maneja efectos secundarios de forma pura". Se debe distinguir de la definición de Mónada hecha por el filósofo alemán Gottfried Wilhelm Leibniz. La cual dice: "Una mónada es la base de todo lo existente; la materia espiritualizada". Para Leibniz, es la substancia simple, única e independiente que compone la realidad en la que vivimos. Algunos más aventurados la considerarían el alma misma. Mónadas Una mónada es como una caja mágica que envuelve un valor y sabe cómo aplicar funciones a ese valor sin que tú tengas que preocuparte por los detalles. En la programación funcional , una mónada (monad), es un patrón de diseño que representa cálculos definidos como una secuencia de pasos, permitiendo componer funciones con tipos incompatibles encapsulándolos e...

Funciones en Haskell

Imagen
Hoy veremos lo que son las funciones en Haskell . Recordemos que este lenguaje toma mucha inspiración de las Matemáticas. Por lo que veremos primero la definición de lo que es una función en Matemáticas. Función matemática Una función es: regla que asigna a cada valor de entrada un único valor de salida . Ejemplo. Si defines una función que " a cada número le suma 3 ", entonces: f (x) = x + 3 -- f(x) = y Graficando una función matemática Ahora imaginemos que tenemos esta tablita: Función f(x) Valores de x Resultado f(x) = x + 3 2 5 f(x) = x + 3 1 4 f(x) = x + 3 0 3 f(x) = x + 3 -1 2 f(x) = x + 3 -2 1 ...

Variables en Haskell

Imagen
En Haskell el concepto de variable cambia un poco; en este lenguaje funcionan como nombres inmutables asignados a valores o expresiones , actuando de forma idéntica a las matemáticas puras en lugar de como casillas de memoria modificables , como en C o lenguajes similares. Por ejemplo, tenemos este ejemplo en C : variables.c #include <stdio.h> #include <stdlib.h> #include <math.h> #include <stdbool.h> int main (){ bool bandera = true; int estado = -3 ; char cadena[] = "FERROCARRILERO." ; float flotante = 3.0f ; double real = 22.0880 ; printf( "Booleano: %d \n " ,bandera); printf( "Estado: %d \n " ,estado); printf( "Cadena: %s \n " ,cadena); printf( "Flotante: %f \n " ,flotante); printf( "Double: %f \n " ,real); return 0 ; } En Haskell sería de este modo: variables.hs bandera :: Bool bandera = True estado ...