Chapitre 03 - Immutability Flashcards
Pure functions
Fonction qui renvoie toujours la même valeur
Fonction qui me change pas l’environnement (no side effect)
Impure functions
Fonction avec une valeur différente avec la même entrée
Provoque des side effects
Actions (Procedures)
Ne renvoie rien. Pas utilisable comme fonction. Par principe avec side effect
Expression?
valeur comme par exemple 2 ou x + 1
Statement?
L’assignation est un statement. Il agit
En programmation fonctionnelle, expression ou statement?
On va préférer les expressions. On va plutôt penser que l’assignation est de donner un nom à une expression
Functional variables?
des variables immutables, non assignable ou seulement une fois
Problème habituel du if-then-else en programmation fonctionnelle
Il faut que le if renvoie une valeur ou expression sinon ce sont des statements. En JS => (x>1)?1:0 par exemple
Immutable objects / functional objects
Un object immutable dans une variable immutable => changement impossible
un objet immutable dans une variable mutable => ajout par exemple à un Set possible
Le but est d’avoir des méthodes qui vont créer un nouvel objet plutôt que de modifier l’objet lui même
Construction des listes fonctionnelles
Il faut un “head”, le nil et l’ajout
En Lisp (cons 1 (cons 2 (cons 3 nil)))
Head et Tail des listes
Head => premier élément
Tail élément suivant (référence)
Avantage de l’immutabilité des valeurs dans les listes
On peut partager facilement les mêmes valeurs en mémoire
Hybrid design
Utilisation de mutable et immutable ensemble
Utilisation parfois de copies défensive (clone) pour être sur de l’action sans effet de bord de certaines fonctions impures
Utilisation d’immutable dans des champs objets mutables
On peut partager plus facilement les valeurs car immutable même si on peut les changer dans l’objet
List en programmation fonctionnelle
liste fonctionnelle: persistante, immutable, un head, tail et nil