4. Pour faire simplePour faire simple
Concerne l'utilisation deConcerne l'utilisation de
fonctions !fonctions !
5. Code impératifCode impératif
Description duDescription du commentcomment mais pasmais pas
forcément duforcément du quoiquoi
Changements d'étatsChangements d'états
6. Code fonctionnelCode fonctionnel
Plus déclaratifPlus déclaratif
Evite les changements d'états →Evite les changements d'états →
thread-safethread-safe
Plus simple à comprendre pour unPlus simple à comprendre pour un
débutantdébutant
7. John von NeumannJohn von Neumann
Mémoire
Entrée Sortie
Accumulateur
Unité de
contrôle
Unité
arithmétique
et logique
Machine à étatMachine à état
Ordinateurs encore basés sur cetteOrdinateurs encore basés sur cette
architecturearchitecture
Langage impératif en découleLangage impératif en découle
13. Fonction pureFonction pure
Les paramètres ne sont pas modifiésLes paramètres ne sont pas modifiés
function carre(x){
return x * x;
}
carrecarre estest une fonctionune fonction purepure
function incr(x){
return x++;
}
incrincr n'est pasn'est pas une fonctionune fonction purepure
14. Toutes les propriétés etToutes les propriétés et
bénéfices de la programmationbénéfices de la programmation
fonctionnelle sont dérivées defonctionnelle sont dérivées de
l'absence d'effets secondairesl'absence d'effets secondaires
lors de l'application d'unelors de l'application d'une
fonctionfonction
15. Fonctions d'ordre supérieurFonctions d'ordre supérieur
Fonctions qui prennent d'autres fonctionsFonctions qui prennent d'autres fonctions
en paramètreen paramètre
mult(x,y) → x * ymult(x,y) → x * y
paire(f,x) → f(x,x)paire(f,x) → f(x,x)
carre(x) → paire(mult,x)carre(x) → paire(mult,x)
Fonctions qui retourne une fonctionFonctions qui retourne une fonction
puissance(n) → x → x ^ npuissance(n) → x → x ^ n
16. JavaScriptJavaScript
CallbacksCallbacks
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
Permet d'exprimer un comportementPermet d'exprimer un comportement
18. ScalaScala
Langage basé sur la JVMLangage basé sur la JVM
FonctionnelFonctionnel etet ObjetObjet
Fortement typéFortement typé
Inférence de typeInférence de type
19. Types de définitionTypes de définition
var variable (mutable)
val valeur (immutable)
def définition de fonction
Immutabilité fait partie du langageImmutabilité fait partie du langage
20. ExempleExemple
Fonction en paramètreFonction en paramètre
def mult(a: Long, b: Long): Long = a * b
def paire(f: (Long, Long) => Long, x: Long) = f(x, x)
def carre(x: Long) = paire(mult, x)
21. ExempleExemple
Fonction en retourFonction en retour
def puissance(x:Long) = (y:Long) => Math.pow(y,x)
def carre2(x: Long) = puissance(2)(x)
def carre3 = puissance(2)
23. Eviter les "if" dans le codeEviter les "if" dans le code
Remplacer par du polymorphismeRemplacer par du polymorphisme
Limiter les états intermédiairesLimiter les états intermédiaires
24. Pattern matchingPattern matching
def titre(x: Any): String = x match {
case 1 => "un"
case "Jean" => "Juan"
case Personne(nom, age) => s"Monsieur ${nom} agé de ${age} ans"
case nom: String => nom
case _ => ""
}