cnam:utc503:declarative:fonctionnelle

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cnam:utc503:declarative:fonctionnelle [2023/11/09 19:26] – [3- Transparence référentielle] jcheroncnam:utc503:declarative:fonctionnelle [2023/11/10 07:27] (Version actuelle) jcheron
Ligne 5: Ligne 5:
 Basée sur l'utilisation des fonctions, à la condition de respecter certains principes. Basée sur l'utilisation des fonctions, à la condition de respecter certains principes.
  
-La prog fonctionnelle n'admet pas le changement d'états et la mutation des données(contrairement à la prog impérative).+La prog fonctionnelle n'admet pas le changement d'états et la mutation des données (contrairement à la prog impérative).
  
 Les langages fonctionnels sont ceux vouent un culte à ces principes ou sont basés sur eux : Les langages fonctionnels sont ceux vouent un culte à ces principes ou sont basés sur eux :
Ligne 175: Ligne 175:
  
 <WRAP info> <WRAP info>
-pure functions + immutable data = referential transparency+''pure functions + immutable data = referential transparency'' 
 + 
 +Grâce à ce concept, il est possible de memoïzer (https://en.wikipedia.org/wiki/Memoization) la fonction, pour accroître les performances, en évitant son appel.
 </WRAP> </WRAP>
 +
 +==== 4- Fonction d'ordre supérieur ====
 +
 +Fonctions objet de première classe ou Functions as first-class entities :
 +
 +Une fonction est un type de données (callback) et peut-être passée en paramètre d'une fonction ou être retournée par une fonction.
 +
 +Les fonctions qui en manipulent d'autres sont qualifiées d'ordre supérieur.
 +
 +**Exemple :**
 +
 +Considérons les fonctions suivantes :
 +
 +<sxh javascript;gutter:false>
 +const doubleSum = (a, b) => (a + b) * 2;
 +const doubleSubtraction = (a, b) => (a - b) * 2;
 +</sxh>
 +
 +Nous pourrions considérer que nous avons 3 fonctions :
 +  * somme
 +  * soustraction
 +  * double qui peut utiliser la soustraction, la somme ou toute autre opération
 +
 +<sxh javascript;gutter:false>
 +const
 +sum = (a, b) => a + b;
 +const subtraction = (a, b) => a - b;
 +const doubleOperator = (f, a, b) => f(a, b) * 2;
 +
 +doubleOperator(sum, 3, 1);// 8
 +doubleOperator(subtraction, 3, 1);// 4
 +</sxh>
 +
 +**doubleOperator** est une fonction d'ordre supérieur.
 +
 +==== 5- Monades ====
 +
 +Structure permettant de manipuler des langages fonctionnels purs dans des traits impératifs.
 +
 +**Exemples :**
 +
 +  * Result may or may not exist: solved by the Maybe monad.
 +  * Nondeterministic number of result: solved by the List monad.
 +  * Outside world interaction: solved by the IO monad.
 +  * Eventual result: solved by the Promise/Future monad.
 +  * Dependence on state: solved by the State monad.
 +  * Errors: solved by the Error monad.
 +
 +===== Applications =====
 +
 +  * [[https://www.codingame.com/playgrounds/2980/practical-introduction-tofunctional-
 +programming-with-js/pure-functions|Exercices pratiques sur Coding game]]
 +
  • cnam/utc503/declarative/fonctionnelle.1699554369.txt.gz
  • Dernière modification : il y a 18 mois
  • de jcheron