Table des matières

TD 3

Exercice 1 : Fonctions Pures

1 - Création d'une fonction pure simple

2 - Test de la pureté

3 - Exemple d'une fonction impure

Points de discussion

  • Pourquoi éviter les effets de bord ?
  • Quels types de bugs ou de problèmes peuvent survenir dans un code non pur ?

Exercice 2 : Immutabilité

1 - Ajout d'un élément sans modification du tableau

2 - Comparaison avec une approche mutable

3 - Modification immutable d'un objet

Points de discussion

  • Pourquoi l'immutabilité est-elle essentielle en programmation fonctionnelle ?
  • Quels avantages cela présente-t-il pour la gestion des états dans des applications complexes ?

Exercice 3 : Transparence Référentielle

1 - Transparence dans une fonction simple

2 - Transparence dans des expressions complexes

3 - Absence de transparence référentielle

Points de discussion

  • Pourquoi la transparence référentielle est-elle cruciale pour rendre un code plus facile à lire et à raisonner ?
  • Comment la transparence référentielle permet-elle d'optimiser ou de simplifier un code lors du développement ?

Exercice 4 : Fonctions d'ordre supérieur

1 - Application d'une fonction à chaque élément d'un tableau

2 - Création de fonctions retournant des fonctions

3 - Utilisation de fonctions d'ordre supérieur intégrées

Points de discussion

  • En quoi les fonctions d’ordre supérieur facilitent-elles la modularité du code ?
  • Comment ce concept peut-il être utilisé pour encapsuler des comportements et les réutiliser dans plusieurs contextes ?

Exercice 5 : Combinaison des principes

1 - Manipulation de tableaux d'objets

2 - Calcul total avec `reduce`

3 - Refactorisation pour pureté et réutilisabilité

Points de discussion

  • Quel est l'impact de l'immuabilité dans cet exemple ?
  • Pouvez-vous voir où la transparence référentielle intervient dans ce code ?
  • Comment la combinaison de ces principes conduit-elle à un code plus fiable et facile à maintenir ?
  • Quelles améliorations peuvent être apportées pour rendre le code plus fonctionnel ?