Chapitre 05 - Pattern matching et Algebraic data types Flashcards

1
Q

Functional Switch

A

En fonction de valeur choisit une autre valeur à renvoyer

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

Functional Switch with Guard

A

On vérifie si certains des éléments satisfont une condition comme commencer par “–”

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

Tuples

A

C’est l’association de deux types ensembles (String, Int)

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

Avantage des Tuples pour le pattern amtching

A

On peut faire du matching sur un élément, ou sur les deux

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

Options dans les tuples

A

Dans le tuples il faut des valeurs, Si on met une option, on rajoute la possibilité qu’une valeur n’existe pas

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

Lists avec pattern matching

A

On peut revoir les éléments d’une liste comme un matching de head :: tail et les autres possibilités _ :: tail , head :: _ etc.

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

Trees avec pattern matching

A

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

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

Le type algebrique produit

A

C’est l’ensemble des possibilités d’association ex: (Alphabet x Digit) => 260 possibilités

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

Le type algebrique somme

A

C’est lorsqu’on met les possibilités ensemble (Alphabet + Digit) => 36 possibilités

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

Utilisation d’options dans des types produits ou sommes

A

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

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

La liste Zipper

A

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

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

Aller à droite dans un liste zipper

A

Mettre la tete de la liste 2, dans la liste 1
Pattern matching
(left, x::right) => (x::left, right)

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

Aller à gauche dans une liste zipper

A

Mettre la tete de la liste 1 dans la liste 2
Pattern matching
(x::left, right) => (left, x::right)

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

Accéder à l’élément courant dans une liste ziper

A

C’est le head de la liste 2
Pattern matching
(,x::) => x

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

Changer l’élément courant dans la liste zipper

A

C’est changer la valeur de l’élément courant en recréant un zipper
Pattern matching
(left,_::right) => (left,value::right)

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

Qu’est qu’un extracteur

A

C’est un pattern matching qui décompose un valeur en sous composant
Ex ARGB(0xABCDEF88) => A = 0xAB, R = CD, G = EF, B = 88

17
Q

Quelques types algebrique

A

Simple: Tuples, Options
Complexe: Lists, Trees

18
Q

Pourquoi le pattern matching est adapté au liste

A

Parce que c’est des produits (head, tail) et des sommes (vide)
Aggregation et alternative