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