JS - Chapitre 10 - Monads Flashcards
Qu’est qu’un monad
Le monad est un objet qui entoure une valeur qui permet le mapping et le “flat mapping”
Difference entre mapping et flat mapping
Dans le cas du mapping, un tableau peut après application d’un mapping renvoyer un tableau dans un tableau [ [“coucou”, “c’est moi”], “ok”]
Le flat mapping aurait donné : [“coucou”, “c’est moi”, “ok” ]
Quel est la methode qui fait du flat mapping
pour les tableaux c’est “flatMap”
On peut aussi faire map + flat (avec un profondeur)
Exemple de monads (identity monad)
function M(value) {
function map(f) {
const newValue = f(value);
return M(newValue);
}
function flatMap(f) {
const newValue = f(value);
return newValue;
}
return {
map,
flatMap
}
}
Quelles lois doit respecter le monad
1/ identité gauche : un monad qui est mis dans le flatMap de l’identité doit être la même chose que d’invoquer le monad
M(x).flatMap(f) = f(x)
2/ identité droite
Si on passe le monad identité M dans un flatmap d’un monad on doit obtenir le monad
monad.flatMap(M) === monad
3/ associativité
monad.flatMap(f).flatmap(g) === monad.flatMap(x => f(x).flatMap(g))
Alternative de création et de nommage du monad
autre nom du flatmapping => flatMap, bind, chain
Il y a aussi une méthode unit qui va être une “factory”
Est-ce que les tableaux avec map et flapMap respectent la loi des monads?
Oui les tableaux respectent les 3 lois.
On peut créer des tableaux avec Array.of(‘apples’);