En Haskell, las variables funcionan de manera diferente a los lenguajes de programación imperativos como Java o Python. Al ser un lenguaje de programación funcional, Haskell trata a las variables como nombres simbólicos para representar valores, y son inmutables una vez asignadas, lo que significa que no pueden cambiar después de su inicialización.
A diferencia de otros lenguajes, Haskell no utiliza palabras clave como var
o let
para declarar variables de manera global en su mayoría de usos. Simplemente se define un nombre seguido de un valor:
nombre = "Haskell"
En este ejemplo:
nombre
es una variable que almacena el valor "Haskell"
.
nombre
en ningún momento.
mensaje = "Hola, Haskell!"
numero = 5
main = do
putStrLn mensaje
print numero
Aquí:
mensaje
almacena un string y numero
almacena un entero.
putStrLn
imprime cadenas de texto, y print
se usa para imprimir números.
Salida:
Hola, Haskell!
5
Una de las principales características de Haskell es la inmutabilidad. Esto significa que, una vez que asignas un valor a una variable, no puedes modificarlo.
x = 10
x = 20 -- Esto causará un error
El código anterior arrojará un error, ya que x
no puede ser reasignada a otro valor. En Haskell, si necesitas un valor diferente, deberás crear una nueva variable o usar una expresión que derive un nuevo valor.
let
para declarar variables en expresiones locales
Aunque las variables son inmutables, puedes crear nuevas variables en el contexto de una expresión o función usando let
.
let
main = do
let x = 10
let y = 20
let suma = x + y
print suma
Salida:
30
Aquí:
let
crea una variable en el contexto local de la función main
.
x
, y
, y suma
están disponibles solo dentro de ese bloque.
En Haskell, puedes usar variables dentro de funciones para almacenar el resultado de una expresión y luego utilizarlo dentro del cuerpo de la función.
suma :: Int -> Int -> Int
suma a b = resultado
where resultado = a + b
En este ejemplo:
suma
es una función que toma dos parámetros enteros (a
y b
).
resultado
es una variable local creada dentro de la función mediante where
, que almacena la suma de a
y b
.
Uso:
main = print (suma 3 4)
Salida:
7
where
y let
en funciones
Haskell permite definir variables dentro de una función utilizando where
o let
.
where
calcularArea :: Float -> Float -> Float
calcularArea base altura = area
where area = base * altura / 2
calcularArea
calcula el área de un triángulo.
area
es una variable calculada dentro de la función y está definida con where
.
let
en una expresión
main = do
let x = 5
let y = 10
let resultado = x * y
print resultado
Este es un ejemplo típico donde let
se utiliza dentro de un bloque do
en el contexto de E/S.
Haskell tiene un sistema de tipado estático. Esto significa que el compilador verifica los tipos de las variables en tiempo de compilación. Los tipos pueden ser inferidos automáticamente, pero también puedes declararlos explícitamente para mayor claridad.
nombre :: String
nombre = "Haskell"
numero :: Int
numero = 5
nombre
es declarado como tipo String
.
numero
es declarado como tipo Int
.
Las variables en Haskell son inmutables, lo que refuerza la programación funcional. Aunque no se pueden cambiar una vez asignadas, puedes utilizar let
y where
para crear variables locales dentro de expresiones y funciones. Haskell también cuenta con un sistema de tipado estático que ayuda a evitar errores relacionados con el tipo de datos.
Para más información sobre el uso de variables en Haskell, visita la documentación oficial de Haskell.
Jorge García
Fullstack developer