Ceci est une ancienne révision du document !
TD 3
Exercice 1 : Fonctions Pures
1 - Créer une fonction pure simple
- Écrire une fonction pure qui prend un tableau de nombres et retourne un nouveau tableau avec chaque nombre doublé.
2 - Tester la pureté
- Tester la fonction avec différents ensembles de données.
- Identifier les caractéristiques qui font que la fonction est pure.
3 - Exemple de fonction impure
- Créer une fonction qui modifie une variable extérieure (effet de bord) et expliquer pourquoi elle est impure.
Exercice 2 : Immutabilité
1 - Ajouter un élément sans modifier le tableau
- Écrire une fonction qui ajoute un élément à un tableau sans modifier le tableau d'origine.
2 - Comparaison avec une approche mutable
- Modifier directement un tableau en utilisant `.push()` et observer les changements sur le tableau d'origine.
3 - Créer une fonction immuable pour un objet
- Écrire une fonction qui modifie une propriété d'un objet sans altérer l'original.
Exercice 3 : Transparence Référentielle
1 - Fonction simple avec transparence référentielle
- Créer une fonction qui calcule la somme de deux nombres.
- Remplacer les appels de fonction dans le code par les valeurs retournées et tester le comportement.
2 - Tester avec des expressions plus complexes
- Introduire des fonctions imbriquées et remplacer les appels par leurs valeurs.
- Tester si le programme reste identique.
3 - Explorer l'absence de transparence
- Créer une fonction avec des effets de bord (ex: `Math.random()` ou modification d'une variable globale) et expliquer pourquoi elle n'est pas transparente.
Exercice 4 : Fonctions d'ordre supérieur
1 - Appliquer une fonction à chaque élément d'un tableau
- Écrire une fonction d’ordre supérieur qui prend une fonction et l’applique à chaque élément d’un tableau.
2 - Fonctions retournant des fonctions
- Écrire une fonction qui retourne une autre fonction (par exemple, une fonction qui crée un multiplicateur).
3 - Utilisation des fonctions d'ordre supérieur intégrées
- Expérimenter avec les méthodes comme `filter()`, `reduce()`, et `forEach()` pour transformer des tableaux.
Exercice 5 : Combinaison des principes
1 - Manipulation de tableaux d'objets
- Travailler sur un tableau d'objets représentant des produits avec un prix.
- Appliquer une réduction à chaque produit tout en conservant l'immutabilité.
2 - Utilisation de `reduce` pour un calcul total
- Calculer le prix total après réduction en utilisant `reduce`.
3 - Refactorisation pour pureté et réutilisabilité
- Réécrire le code en appliquant les principes vus, comme découper en plus petites fonctions pures.