Les expressions lambda són una característica fonamental en Haskell i en molts altres llenguatges de programació funcional. Són funcions anònimes, és a dir, funcions que no tenen un nom. Les expressions lambda permeten definir funcions de manera concisa i són especialment útils quan es necessiten funcions petites i d'un sol ús.
Continguts
Què és una Expressió Lambda?
Una expressió lambda és una funció anònima que es defineix utilitzant la sintaxi \
(barra invertida) seguida d'una llista de paràmetres, una fletxa ->
i el cos de la funció. Les expressions lambda són útils per crear funcions ràpidament sense haver de donar-los un nom explícit.
Sintaxi de les Expressions Lambda
La sintaxi general d'una expressió lambda en Haskell és la següent:
Exemple Bàsic
En aquest exemple, \x y -> x + y
és una expressió lambda que pren dos paràmetres x
i y
i retorna la seva suma.
Exemple amb una Llista
-- Una expressió lambda que multiplica cada element d'una llista per 2 map (\x -> x * 2) [1, 2, 3, 4]
En aquest exemple, \x -> x * 2
és una expressió lambda que es passa com a argument a la funció map
.
Exemples Pràctics
Exemple 1: Filtrar una Llista
-- Filtrar els nombres parells d'una llista filter (\x -> x `mod` 2 == 0) [1, 2, 3, 4, 5, 6] -- Resultat: [2, 4, 6]
Exemple 2: Ordenar una Llista de Tuples
-- Ordenar una llista de tuples pel segon element sortBy (\(_, y1) (_, y2) -> compare y1 y2) [(1, 3), (4, 1), (2, 2)] -- Resultat: [(4, 1), (2, 2), (1, 3)]
Ús d'Expressions Lambda amb Funcions d'Ordre Superior
Les expressions lambda són especialment útils quan es treballa amb funcions d'ordre superior com map
, filter
i foldr
.
Exemple amb map
-- Utilitzar una expressió lambda amb map per sumar 1 a cada element d'una llista map (\x -> x + 1) [1, 2, 3, 4] -- Resultat: [2, 3, 4, 5]
Exemple amb foldr
-- Utilitzar una expressió lambda amb foldr per sumar tots els elements d'una llista foldr (\x acc -> x + acc) 0 [1, 2, 3, 4] -- Resultat: 10
Exercicis Pràctics
Exercici 1
Escriu una expressió lambda que multipliqui cada element d'una llista per 3 i utilitza-la amb la funció map
.
Exercici 2
Escriu una expressió lambda que filtri els nombres imparells d'una llista i utilitza-la amb la funció filter
.
Exercici 3
Utilitza una expressió lambda amb la funció foldr
per trobar el producte de tots els elements d'una llista.
Conclusió
Les expressions lambda són una eina poderosa en Haskell que permeten definir funcions de manera concisa i anònima. Són especialment útils quan es treballa amb funcions d'ordre superior com map
, filter
i foldr
. Practicar amb expressions lambda t'ajudarà a comprendre millor la programació funcional i a escriure codi més elegant i eficient.
En el següent tema, explorarem com utilitzar map
, filter
i fold
en més detall, aprofitant les expressions lambda que hem après aquí.