JS - Chapitre 10 - Monads Flashcards

1
Q

Qu’est qu’un monad

A

Le monad est un objet qui entoure une valeur qui permet le mapping et le “flat mapping”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Difference entre mapping et flat mapping

A

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” ]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quel est la methode qui fait du flat mapping

A

pour les tableaux c’est “flatMap”
On peut aussi faire map + flat (avec un profondeur)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Exemple de monads (identity monad)

A

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
}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quelles lois doit respecter le monad

A

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))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Alternative de création et de nommage du monad

A

autre nom du flatmapping => flatMap, bind, chain
Il y a aussi une méthode unit qui va être une “factory”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Est-ce que les tableaux avec map et flapMap respectent la loi des monads?

A

Oui les tableaux respectent les 3 lois.
On peut créer des tableaux avec Array.of(‘apples’);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly