JavaScript


Programmation fonctionnelle

Remi Forax

Functional Programming ?

“In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data (side effects).

source: Wikipedia.org - Functional Programming

Programmation Fonctionnel ?

“En informatique, la programmation fonctionnelle est un paradigme de programmation qui traite chaque calcul comme l'évaluation de fonctions mathématiques et évite les changements d'état et les données mutables (effets de bord).”

source: Wikipedia.org - Programmation fonctionnelle

Rappel: Fonction anonyme

JavaScript possède deux notations pour
pour les fonctions anonymes

 

ForEach

forEach(fun) applique la même fonction à chaque valeur
comme une boucle sans écrire la boucle !

 

Map

map(fun) créer un tableau qui contient les valeurs résultant de l'application la fonction à chaque valeur

 

Filter

filter(fun) créer un tableau avec les valeurs pour lesquelles l'appel de la fonction renvoie vrai

 

some

some renvoie vrai dès qu'une propriété est vérifiée

 

Note: il n'y a pas de parenthèse après greaterThan10 !

every

every demande à ce que la propriété soit vraie sur toutes les valeurs

 

some/every avec une closure

Et si on veut écrire greaterThan(max) ?
On renvoie une closure !

 

Note: il y a des parenthèse après greaterThan() car la fonction renvoie une fonction !

et les index ?

Les méthodes forEach, map, filter, some, every prennent une fonction avec 2 arguments (élément, index) en paramètres

 

En JavaScript, une fonction peut prendre moins de paramètres que d'arguments

Reduce

reduce(fun, init) résume par une valeur en appliquant une fonction d'agrégation

 

filter/map/reduce

Il est possible de combiner les opérations
par ex., compter le nombre de mots commençant par 'b'