Jean DetoeufJean Detoeuf
Développeur
Passionné de nouvelles technologies
#jvm #docker #craftmanship #rpi #diy
Pour faire simplePour faire simpleConcerne l'utilisation deConcerne l'utilisation de
fonctions !fonctions !
Code impératifCode impératifDescription du Description du commentcomment mais pas mais pas
forcément du forcément du quoiquoi
Changements d'étatsChangements d'états
Code fonctionnelCode fonctionnelPlus 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 undébutantdébutant
John von NeumannJohn von Neumann
Mémoire
Entrée Sortie
Accumulateur
Unité decontrôle
Unitéarithmétique et logique
Machine à étatMachine à état
Ordinateurs encore basés sur cetteOrdinateurs encore basés sur cettearchitecturearchitecture
Langage impératif en découleLangage impératif en découle
Fonction mathématiqueFonction mathématiqueSoit
carré(x) → x * xcarré(x) → x * xOn a
carré(3) = 9carré(3) = 9
Fonction pureFonction pureLes paramètres ne sont pas modifiésLes paramètres ne sont pas modifiés
function carre(x){return x * x;
}
carre carre estest une fonction une fonction purepurefunction incr(x){
return x++;}
incr incr n'est pasn'est pas une fonction une fonction purepure
Toutes les propriétés etToutes les propriétés etbénéfices de la programmationbénéfices de la programmationfonctionnelle sont dérivées defonctionnelle sont dérivées del'absence d'effets secondairesl'absence d'effets secondaires
lors de l'application d'unelors de l'application d'unefonctionfonction
Fonctions d'ordre supérieurFonctions d'ordre supérieurFonctions qui prennent d'autres fonctionsFonctions qui prennent d'autres fonctions
en paramètreen paramètremult(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 fonctionpuissance(n) → x → x ^ npuissance(n) → x → x ^ n
JavaScriptJavaScriptCallbacksCallbacks
// 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
ImmutabilitéImmutabilitéLes fonctions passées en paramètresLes fonctions passées en paramètres
doivent être puresdoivent être pures
ScalaScalaLangage basé sur la JVMLangage basé sur la JVM
Fonctionnel Fonctionnel etet Objet Objet
Fortement typéFortement typé
Inférence de typeInférence de type
Types de définitionTypes de définitionvar variable (mutable)val valeur (immutable)def définition de fonction
Immutabilité fait partie du langageImmutabilité fait partie du langage
ExempleExempleFonction en paramètreFonction en paramètre
def mult(a: Long, b: Long): Long = a * bdef paire(f: (Long, Long) => Long, x: Long) = f(x, x)def carre(x: Long) = paire(mult, x)
ExempleExempleFonction 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)
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
Pattern matchingPattern matchingdef 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 => nomcase _ => ""
}
www.scala.iowww.scala.ioLyonLyon
27 et 28 octobre 201627 et 28 octobre 2016
Early birds encore disponibles !Early birds encore disponibles !
Top Related