Remi Forax
“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
“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
JavaScript possède deux notations pour
pour les fonctions anonymes
forEach(fun) applique la même fonction à chaque valeur
forEach ne renvoie pas de valeur
comme une boucle !
filter(fun) créer un tableau avec les valeurs pour lesquelles l'appel de la fonction renvoie vrai
map(fun) créer un tableau qui contient les valeurs résultant de l'application la fonction à chaque valeur
flatMap(fun) créer un tableau qui pour chaque élément applique la fonction et concatène les résultats
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 demande à ce que la propriété soit vraie sur toutes les valeurs
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 !
Les méthodes forEach, filter, etc 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(fun, init) résume par une valeur en appliquant une fonction d'agrégation
Il est possible de combiner les opérations
par ex., compter le nombre de mots commençant par 'b'