Chapitre 05 - Pattern matching et Algebraic data types Flashcards
Functional Switch
En fonction de valeur choisit une autre valeur à renvoyer
Functional Switch with Guard
On vérifie si certains des éléments satisfont une condition comme commencer par “–”
Tuples
C’est l’association de deux types ensembles (String, Int)
Avantage des Tuples pour le pattern amtching
On peut faire du matching sur un élément, ou sur les deux
Options dans les tuples
Dans le tuples il faut des valeurs, Si on met une option, on rajoute la possibilité qu’une valeur n’existe pas
Lists avec pattern matching
On peut revoir les éléments d’une liste comme un matching de head :: tail et les autres possibilités _ :: tail , head :: _ etc.
Trees avec pattern matching
On peut définir l’arbre comme un ensemble de valeurs possibles et ensuite on peut se balader dans l’arbre en faisant du pattern matching
Le type algebrique produit
C’est l’ensemble des possibilités d’association ex: (Alphabet x Digit) => 260 possibilités
Le type algebrique somme
C’est lorsqu’on met les possibilités ensemble (Alphabet + Digit) => 36 possibilités
Utilisation d’options dans des types produits ou sommes
Si on rajouter un Option, il y a la valeur vide en plus, donc Option (Alphabet) x Digit => 270 possibilitiés => Alphabet x Digit + Digit
La liste Zipper
la liste zipper est une structure de donnée avec deux listes, la liste 1 contient le début de la liste à l’envers
la liste 2 contient la fin de la liste
Aller à droite dans un liste zipper
Mettre la tete de la liste 2, dans la liste 1
Pattern matching
(left, x::right) => (x::left, right)
Aller à gauche dans une liste zipper
Mettre la tete de la liste 1 dans la liste 2
Pattern matching
(x::left, right) => (left, x::right)
Accéder à l’élément courant dans une liste ziper
C’est le head de la liste 2
Pattern matching
(,x::) => x
Changer l’élément courant dans la liste zipper
C’est changer la valeur de l’élément courant en recréant un zipper
Pattern matching
(left,_::right) => (left,value::right)