Las expresiones lambda son una característica fundamental en Haskell y en muchos otros lenguajes de programación funcional. Permiten definir funciones anónimas de manera concisa y son especialmente útiles cuando se combinan con funciones de orden superior.
¿Qué es una Expresión Lambda?
Una expresión lambda es una función anónima que no tiene un nombre explícito. Se utiliza principalmente para definir funciones de manera rápida y en línea, sin necesidad de declararlas por separado.
Sintaxis de una Expresión Lambda
La sintaxis básica de una expresión lambda en Haskell es la siguiente:
Donde:
\
es el símbolo lambda.x
es el parámetro de la función.->
separa los parámetros del cuerpo de la función.expression
es el cuerpo de la función.
Ejemplo Básico
Aquí hay un ejemplo simple de una expresión lambda que suma dos números:
Esta expresión lambda toma dos parámetros x
y y
y devuelve su suma.
Uso de Expresiones Lambda
Las expresiones lambda son especialmente útiles cuando se combinan con funciones de orden superior como map
, filter
y fold
.
Ejemplo con map
La función map
aplica una función a cada elemento de una lista. Aquí hay un ejemplo usando una expresión lambda:
En este caso, la expresión lambda \x -> x * 2
se aplica a cada elemento de la lista [1, 2, 3, 4]
, resultando en [2, 4, 6, 8]
.
Ejemplo con filter
La función filter
selecciona elementos de una lista que cumplen con una condición. Aquí hay un ejemplo usando una expresión lambda:
En este caso, la expresión lambda \x -> x > 2
se utiliza para filtrar los elementos de la lista [1, 2, 3, 4]
, resultando en [3, 4]
.
Ejemplo con foldr
La función foldr
reduce una lista a un solo valor usando una función binaria. Aquí hay un ejemplo usando una expresión lambda:
En este caso, la expresión lambda \x acc -> x + acc
se utiliza para sumar todos los elementos de la lista [1, 2, 3, 4]
, resultando en 10
.
Ejercicios Prácticos
Ejercicio 1
Escribe una expresión lambda que multiplique cada elemento de una lista por 3 y úsala con map
.
Solución
Ejercicio 2
Escribe una expresión lambda que filtre los números pares de una lista y úsala con filter
.
Solución
Ejercicio 3
Escribe una expresión lambda que sume todos los elementos de una lista y úsala con foldr
.
Solución
Errores Comunes y Consejos
-
Olvidar los paréntesis en expresiones complejas: Asegúrate de usar paréntesis para agrupar operaciones cuando sea necesario.
map (\x -> (x + 1) * 2) [1, 2, 3]
-
Confundir
foldr
confoldl
: Recuerda quefoldr
procesa la lista de derecha a izquierda, mientras quefoldl
lo hace de izquierda a derecha. Esto puede afectar el resultado en operaciones no conmutativas. -
No especificar todos los parámetros: Asegúrate de que tu expresión lambda tenga todos los parámetros necesarios.
-- Incorrecto \x -> x + y -- Correcto \x y -> x + y
Conclusión
Las expresiones lambda son una herramienta poderosa en Haskell que te permiten definir funciones de manera concisa y flexible. Son especialmente útiles cuando se combinan con funciones de orden superior como map
, filter
y fold
. Practica escribiendo tus propias expresiones lambda para familiarizarte con su uso y sintaxis.
Curso de Programación en Haskell
Módulo 1: Introducción a Haskell
- ¿Qué es Haskell?
- Configuración del Entorno de Haskell
- Sintaxis Básica y Hola Mundo
- Haskell REPL (GHCi)