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:

\paràmetres -> cos_de_la_funció

Exemple Bàsic

-- Una expressió lambda que suma dos nombres
\x y -> x + y

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.

-- Solució
map (\x -> x * 3) [1, 2, 3, 4]
-- Resultat esperat: [3, 6, 9, 12]

Exercici 2

Escriu una expressió lambda que filtri els nombres imparells d'una llista i utilitza-la amb la funció filter.

-- Solució
filter (\x -> x `mod` 2 /= 0) [1, 2, 3, 4, 5, 6]
-- Resultat esperat: [1, 3, 5]

Exercici 3

Utilitza una expressió lambda amb la funció foldr per trobar el producte de tots els elements d'una llista.

-- Solució
foldr (\x acc -> x * acc) 1 [1, 2, 3, 4]
-- Resultat esperat: 24

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í.

© Copyright 2024. Tots els drets reservats