Els funtors aplicatius són una generalització dels funtors que permeten aplicar funcions encapsulades en contextos. Són una part fonamental de la programació funcional en Haskell i proporcionen una manera poderosa de treballar amb efectes i contextos.
Conceptes Clau
Definició de Funtor Aplicatiu
Un funtor aplicatiu és una estructura que permet aplicar funcions encapsulades en contextos a valors encapsulats en contextos. Es defineix per la classe de tipus Applicative
, que és una subclasse de Functor
.
pure
pren un valor i l'encapsula en un context.(<*>)
(anomenat "aplicatiu") pren una funció encapsulada en un context i un valor encapsulat en un context, i aplica la funció al valor.
Exemple de Funtor Aplicatiu
Vegem un exemple amb el tipus Maybe
:
instance Applicative Maybe where pure = Just Nothing <*> _ = Nothing (Just f) <*> something = fmap f something
Això permet aplicar funcions encapsulades en Maybe
a valors encapsulats en Maybe
:
ghci> pure (+3) <*> Just 5 Just 8 ghci> Just (+3) <*> Just 5 Just 8 ghci> Nothing <*> Just 5 Nothing ghci> Just (+3) <*> Nothing Nothing
Operadors Addicionals
Els funtors aplicatius també proporcionen altres operadors útils:
(*>)
i<*
permeten seqüenciar accions, ignorant el resultat d'una d'elles.
Exemple Pràctic
Suposem que volem sumar els valors de dues llistes, però encapsulats en el context de Maybe
:
addMaybes :: Maybe Int -> Maybe Int -> Maybe Int addMaybes mx my = pure (+) <*> mx <*> my ghci> addMaybes (Just 3) (Just 5) Just 8 ghci> addMaybes Nothing (Just 5) Nothing
Exercicis Pràctics
Exercici 1: Implementar Applicative
per una Llista
Implementa la instància de Applicative
per a les llistes.
Exercici 2: Utilitzar Applicative
amb Either
Utilitza Applicative
per treballar amb el tipus Either
:
Prova-ho amb exemples:
Errors Comuns i Consells
- Oblidar
pure
: Recorda quepure
encapsula un valor en un context. - Confusió amb
fmap
:fmap
aplica una funció a un valor encapsulat, mentre que(<*>)
aplica una funció encapsulada a un valor encapsulat. - Seqüenciació: Utilitza
(*>)
i<*
per seqüenciar accions quan no necessites el resultat d'una d'elles.
Resum
Els funtors aplicatius són una eina poderosa per treballar amb contextos en Haskell. Permeten aplicar funcions encapsulades a valors encapsulats, proporcionant una manera elegant de gestionar efectes i contextos. Amb la pràctica, esdevenen una part essencial del teu arsenal de programació funcional.