SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Committed to innovate
LINKVALUE
Ce qui compte
C’est les valeurs !
Introduction à la programmation
fonctionnelle
Linkvalue | whoami
Moi ?
@raphaelbacconni
2
Lead Dev Backend @LinkValue
• Développeur Web
• PHP
• Java
• Scala, JavaScript
• … débute la programmation fonctionnelle avec Scala en janvier
2015
• … apprécie la programmation fonctionnelle depuis ± juillet
2015
Why FP
matters ?
Vous avez dit fonctionnel ?
Des programmes comme suite
d’applications
Sortir du labo
SOMMAIRE
Linkvalue | sommaire
3
Functions
Everywhere
Function
Closure
Memoïsation
Function Composition
AD T
A l g e b r a i c D a t a T y p e s
C a l l m e M a y b e
T r a i t e r l e s e r r e u r s
Linkvalue | Why FP matters ?
Vous avez dit “fonctionnelle” ?
4
Qu’est-ce que la programmation fonctionnelle ?
• Un nouveau langage ?
• Une nouvelle architecture ?
• Une manière de rédiger ses tests ?
• Un nouveau framework JavaScript ?
Linkvalue | Why FP matters ?
Vous avez dit “fonctionnelle” ?
5
Linkvalue | Why FP matters ?
Vous avez dit “fonctionnelle” ?
6
Qu’est-ce que la programmation fonctionnelle ?
• Un nouveau langage ?
• Non ! Mais les langages exposent des apis dédiées au fonctionnel
• Une nouvelle architecture ?
• Non ! Mais de nombreux design patterns sont transposables
• Oui… de nouvelles architectures en découlent
• Une manière de rédiger ses tests ?
• Non ! Mais permet d’écrire du code facilement testable
• Un nouveau framework JavaScript ?
• Non ! Mais il existe de nombreux frameworks FP
• … et ce n’est pas non plus (seulement) faire des filter / map / reduce !
Linkvalue | Why FP matters ?
Des programmes comme suites d’applications
7
Penser mathématiques
• Toute expression produit une valeur
• Basé sur le lambda calcul (Alonzo Church, 1930’s) : tout est fonction
• Influence de la théorie des catégories
• Parfois présentée comme opposée à la POO
• …
Linkvalue | Why FP matters ?
Des programmes comme suites d’applications
8
Application informatique
• Ne plus raisonner en fonction de changement d’état
• Appliquer une fonction sur des inputs produit toujours 1 même résultat
• Principe de substitution et transparence référentielle
• Fonction « pure »
• Données immuables
• Lisp (1958), Scheme (1975), Erlang (1987), Haskell (1990)
• ML (1973, 1983)
Linkvalue | Why FP matters ?
Sortir du laboratoire
9
Linkvalue | Why FP matters ?
Sortir du laboratoire
10
Langages impératifs modernes exposent des API fonctionnelles
• Java 8
• C#
• PHP
• Python
• Swift
• Ruby
• …
Linkvalue | Why FP matters ?
De nouveaux langages
11
Langages multiparadigmes
• Scala
• F#
• Rust
• JavaScript 2015
• Elixir
Fonctionnels (presque) purs
• Clojure
• ELM
Linkvalue | Why FP matters ?
Quelles technos ?
12
Champs d’application
• Traitement de données : Spark, Apex
• Messages brokers : Apache Kafka, Rabbitmq
• Architectures asynchrones et message driven : Akka
• Data streaming : Apache Flink, Akka Stream, Rx*
• Serveur web : Playframework, Twitter Finatra, Nodejs
• Construction d’IHM : Reactjs, Temporal Logic of Actions
Linkvalue | Why FP matters ?
Pour qui ?
13
Acteurs et domaines d’application
• Banque, assurances : Axa, April, …
• Réseaux sociaux : Twitter, LinkedIn, Facebook, WhatsApp, Instagram, …
• Streaming : Soundcloud, Spotify, Deezer
• Data storage : Dropbox
Linkvalue | Why FP matters ?
14
W h y F P m a t t e r s ?
V o u s a v e z d i t f o n c t i o n n e l ?
D e s p r o g r a m m e s c o m m e
s u i t e d ’ a p p l i c a t i o n s
S o r t i r d u l a b o
SOMMAIRE
Linkvalue | sommaire
15
Functions
Everywhere
Function
Closure
Memoïsation
Function Composition
AD T
A l g e b r a i c D a t a T y p e s
C a l l m e M a y b e
T r a i t e r l e s e r r e u r s
Linkvalue | Functions Everywhere
Préambule : coder en scala
16
Linkvalue | Functions Everywhere
TP : afficher une liste d’utilisateurs
17
Linkvalue | Functions Everywhere
TP : afficher une liste d’utilisateurs
18
Impératif – Orienté Objet
Linkvalue | Functions Everywhere
Function as First Class citizen
19
Linkvalue | Functions Everywhere
Function as First Class citizen
20
Multiparadigme – Approche fonctionnelle
Linkvalue | Functions Everywhere
Function as First Class citizen
21
Multiparadigme – Approche fonctionnelle
Linkvalue | Functions Everywhere
TP : Filtrer les utilisateurs en fonction de la conf
22
Linkvalue | Functions Everywhere
TP : Filtrer les utilisateurs en fonction de la conf
23
Linkvalue | Functions Everywhere
Closure
24
Principes
• Fonction qui peut accéder aux variables du scope
• Permet d’embarquer un contexte
• Initialiser des valeurs depuis une fonction constructeur
Linkvalue | Functions Everywhere
Memoïsation : implémenter un cache local
25
Linkvalue | Functions Everywhere
Memoïsation : implémenter un cache local
26
Linkvalue | Functions Everywhere
TP : rationaliser l’affichage des infos MeetupGuest
27
Linkvalue | Functions Everywhere
TP : rationaliser l’affichage des infos MeetupGuest
28
Linkvalue | Functions Everywhere
TP : rationaliser l’affichage des infos MeetupGuest
29
Linkvalue | Functions Everywhere
Function composition
30
Principes
• Créer une fonction qui appliquera successivement n fonctions
• Permet d’appliquer des transformations indépendamment du contexte
• Currying & Partiall application function
• Allège l’écriture de code
Linkvalue | Functions Everywhere
TP : composer nos fonctions d’affichage
31
Il nous faut :
• Enrichir les fonctions de sélection d’une donnée
• Préparer les appels de fonctions avec les paramètres à disposition
• Transformer légèrement la fonction d’affichage
Linkvalue | Functions Everywhere
TP : composer nos fonctions d’affichage
32
Il nous faut :
• Enrichir les fonctions de sélection d’une donnée
Linkvalue | Functions Everywhere
TP : composer nos fonctions d’affichage
33
Il nous faut :
• Enrichir les fonctions de sélection d’une donnée
• Préparer les appels de fonctions avec les paramètres à disposition
Linkvalue | Functions Everywhere
TP : composer nos fonctions d’affichage
34
Il nous faut :
• Enrichir les fonctions de sélection d’une donnée
• Préparer les appels de fonctions avec les paramètres à disposition
• Transformer légèrement la fonction d’affichage
W h y F P m a t t e r s ?
V o u s a v e z d i t f o n c t i o n n e l ?
D e s p r o g r a m m e s c o m m e
s u i t e d ’ a p p l i c a t i o n s
S o r t i r d u l a b o
SOMMAIRE
Linkvalue | sommaire
35
F u n c t i o n s
E v e r yw h e r e
F u n c t i o n
C l o s u r e
M e m o ï s a t i o n
F u n c t i o n C o m p o s i t i o n
ADT
Algebraic Data Types
Call me Maybe
Traiter les erreurs
Linkvalue | Algebraic Data Types
Monoïd ! Monad ! Functor !
36
Linkvalue | Algebraic Data Types
Algebraic Data Types
37
Présentation
• Structures de données
• exposent une api d’applications : transformations, morphismes, …
• Conteneurs : List, Int, String…
• ≠ Objet
• Théorie des catégories
Linkvalue | Algebraic Data Types
En pratique
38
Linkvalue | Algebraic Data Types
TP : Afficher les infos des amis
39
Linkvalue | Algebraic Data Types
Gérer les erreurs
40
Call me maybe : le type Option
• Conteneur qui contient éventuellement une valeur
• None : vide
• Some : contient une valeur
• Permet d’appliquer des transformations sans avoir à gérer l’absence de
résultat
• Évite les NullPointerException
• Permet de définir une application par défaut en cas d’absence de résultat
• Aussi appelé Maybe …
Linkvalue | Algebraic Data Types
Gérer les erreurs – Option Type
41
Linkvalue | Algebraic Data Types
Gérer les erreurs – Option Type
42
Linkvalue | Algebraic Data Types
Gérer les erreurs – Option Type
43
Linkvalue | Algebraic Data Types
Gérer les erreurs – Option Type
44
Linkvalue | Algebraic Data Types
Gérer les erreurs – Option Type
45
Linkvalue | Algebraic Data Types
Gérer les erreurs
46
La liberté c’est de choisir, et choisir c’est renoncer : Le type Either
Linkvalue | Algebraic Data Types
Traiter les erreurs : Either Type
47
Catégoriser les retours avec Either
• Conteneur qui contient distinctement la valeurs calculée par le traitement
ou une valeur alternative si le traitement échoue
• Left : Contiendra une information sur l’erreur si une erreur survient
• Right : Contiendra la valeur telle qu’on l’attend
• Dans le meilleur des cas : parcours semblable au parcours d’une Option
• On récupère l’erreur sous forme d’une valeur
Linkvalue | Pour conclure…
Pour conclure
48
Linkvalue | Pour conclure…
Pour conclure
49
On aime !
• Repenser la manière dont on crée des programmes
• Focus sur les traitements et les transformations
• Penser valeur
• Renvoyer les effets de bord en périphérie du cœur de l’application
Does FP rules the world ?
• On doit faire avec les effets de bord: le fonctionnel pur est compliqué dans
une application d’entreprise
• Coût du ticket d’entrée peut être élevé
• Haut niveau d’abstraction : certains traitements peuvent être plus
performants en mode impératif
• Langages multiparadigmes offrent le choix
• Possible d’appliquer les concepts de FP dans des langages impératifs
Linkvalue | Merci !
Merci !
50
Linkvalue | Références
Références
51
Learn
• https://twitter.github.io/scala_school/
• http://danielwestheide.com/scala/neophytes.html
• https://www.scala-exercises.org/
• https://www.coursera.org/specializations/scala
Articles
• http://www.vasinov.com/blog/16-months-of-functional-programming/
• https://medium.com/@sinisalouc/demystifying-the-monad-in-scala-
cc716bb6f534
• https://www.infoq.com/articles/no-more-mvc-frameworks
Books
• Functional Programming in Scala, Paul Chiusano and Rúnar Bjarnason,
Manning 2014
• Functional Programming Patterns in Scala and Clojure - Write Lean
Programs for the JVM, Michael Bevilacqua-Linn, The Pragmatic Bookshelf
2013
• Functional Programming in JavaScript, Dan Mantyla, Packt Publishing 2015
• Mostly adequate Guide to Functional Programming -
https://github.com/MostlyAdequate/mostly-adequate-guide
www.linkvalue.fr
NOUS CONTACTER
MAIL TELEPHONEADRESSE
Raphaël Bacconnier| Partner Tech
raphael.bacconnier@link-value.fr
06 61 32 19 97
01 45 22 30 27
5 rue de la ruche, 69003, Lyon
Linkvalue | Nom de la partie
52
108 rue des Dames, 75017, Paris

Weitere ähnliche Inhalte

Was ist angesagt?

Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...TelecomValley
 
20141113 devoxx2014 jochim van dorpe testing in agile
20141113 devoxx2014 jochim van dorpe testing in agile20141113 devoxx2014 jochim van dorpe testing in agile
20141113 devoxx2014 jochim van dorpe testing in agileSmals
 
Cerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsCerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsAurélien Bourdon
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...TelecomValley
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...TelecomValley
 
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...TelecomValley
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] IntroductionCellenza
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?XP Day CH
 

Was ist angesagt? (11)

Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
 
20141113 devoxx2014 jochim van dorpe testing in agile
20141113 devoxx2014 jochim van dorpe testing in agile20141113 devoxx2014 jochim van dorpe testing in agile
20141113 devoxx2014 jochim van dorpe testing in agile
 
Cerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsCerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnels
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
 
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] Introduction
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 

Andere mochten auch

Presentation Microsoft SEO
Presentation Microsoft SEOPresentation Microsoft SEO
Presentation Microsoft SEOAymeric Jacquet
 
3 Clés du Succès en Affaires
3 Clés du Succès en Affaires 3 Clés du Succès en Affaires
3 Clés du Succès en Affaires mariam tounkara
 
Denis Vincent Helico
Denis Vincent HelicoDenis Vincent Helico
Denis Vincent HelicoDenis Vincent
 
Comment planifier in extremis sa succession
Comment planifier in extremis sa successionComment planifier in extremis sa succession
Comment planifier in extremis sa successionRenaud Renard
 
Denis Vincent Quebec
Denis Vincent QuebecDenis Vincent Quebec
Denis Vincent QuebecDenis Vincent
 
Culture Numérique Master EMT1 Caen
Culture Numérique Master EMT1 CaenCulture Numérique Master EMT1 Caen
Culture Numérique Master EMT1 CaenLeaGu
 
B installation mint 17.2 début.mini
B installation mint 17.2 début.miniB installation mint 17.2 début.mini
B installation mint 17.2 début.miniOpenFactory 42
 
Connaître Denis Vincent du Canada
Connaître Denis Vincent du CanadaConnaître Denis Vincent du Canada
Connaître Denis Vincent du CanadaDenis Vincent
 
La mauvaise éducation jo 1924
La mauvaise éducation  jo 1924La mauvaise éducation  jo 1924
La mauvaise éducation jo 1924Marc De Jongy
 
Madeleine Sophie et Josefa
Madeleine Sophie et JosefaMadeleine Sophie et Josefa
Madeleine Sophie et JosefaSr Denis Monique
 
Catalogue des vidéos du centre de documentation
Catalogue des vidéos du centre de documentationCatalogue des vidéos du centre de documentation
Catalogue des vidéos du centre de documentationvaldesartheyg
 
Formation : les bases de Twitter pour les cadres
Formation : les bases de Twitter pour les cadresFormation : les bases de Twitter pour les cadres
Formation : les bases de Twitter pour les cadresBenjamin Flambert
 
Questionnaire Dr Christian Lemaire
Questionnaire Dr Christian LemaireQuestionnaire Dr Christian Lemaire
Questionnaire Dr Christian LemaireViewOn
 
Choix de lille ça coince
Choix de lille ça coinceChoix de lille ça coince
Choix de lille ça coinceMarc De Jongy
 

Andere mochten auch (20)

Presentation Microsoft SEO
Presentation Microsoft SEOPresentation Microsoft SEO
Presentation Microsoft SEO
 
3 Clés du Succès en Affaires
3 Clés du Succès en Affaires 3 Clés du Succès en Affaires
3 Clés du Succès en Affaires
 
Denis Vincent Helico
Denis Vincent HelicoDenis Vincent Helico
Denis Vincent Helico
 
Comment planifier in extremis sa succession
Comment planifier in extremis sa successionComment planifier in extremis sa succession
Comment planifier in extremis sa succession
 
Denis Vincent Quebec
Denis Vincent QuebecDenis Vincent Quebec
Denis Vincent Quebec
 
Culture Numérique Master EMT1 Caen
Culture Numérique Master EMT1 CaenCulture Numérique Master EMT1 Caen
Culture Numérique Master EMT1 Caen
 
B installation mint 17.2 début.mini
B installation mint 17.2 début.miniB installation mint 17.2 début.mini
B installation mint 17.2 début.mini
 
Peinture sur route
Peinture sur routePeinture sur route
Peinture sur route
 
Al aire del romance
Al aire del romanceAl aire del romance
Al aire del romance
 
Guirado
GuiradoGuirado
Guirado
 
Connaître Denis Vincent du Canada
Connaître Denis Vincent du CanadaConnaître Denis Vincent du Canada
Connaître Denis Vincent du Canada
 
La mauvaise éducation jo 1924
La mauvaise éducation  jo 1924La mauvaise éducation  jo 1924
La mauvaise éducation jo 1924
 
Madeleine Sophie et Josefa
Madeleine Sophie et JosefaMadeleine Sophie et Josefa
Madeleine Sophie et Josefa
 
L humour de-mark_twain
L humour de-mark_twainL humour de-mark_twain
L humour de-mark_twain
 
Catalogue des vidéos du centre de documentation
Catalogue des vidéos du centre de documentationCatalogue des vidéos du centre de documentation
Catalogue des vidéos du centre de documentation
 
Formation : les bases de Twitter pour les cadres
Formation : les bases de Twitter pour les cadresFormation : les bases de Twitter pour les cadres
Formation : les bases de Twitter pour les cadres
 
Questionnaire Dr Christian Lemaire
Questionnaire Dr Christian LemaireQuestionnaire Dr Christian Lemaire
Questionnaire Dr Christian Lemaire
 
Choix de lille ça coince
Choix de lille ça coinceChoix de lille ça coince
Choix de lille ça coince
 
Presentación sobre la empresa
Presentación sobre la empresaPresentación sobre la empresa
Presentación sobre la empresa
 
Mas
MasMas
Mas
 

Ähnlich wie Ce qui compte c'est les valeurs ! Introduction à la programmation fonctionnelle

Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Marine Karam
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre MICHRAFY MUSTAFA
 
14_PM_chapitre3_Modelisation pour modélisation
14_PM_chapitre3_Modelisation pour modélisation14_PM_chapitre3_Modelisation pour modélisation
14_PM_chapitre3_Modelisation pour modélisationGeorges OLE
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erpJoubi Aaziz
 
Cyproc formation-programmation-en-langage-c
Cyproc formation-programmation-en-langage-cCyproc formation-programmation-en-langage-c
Cyproc formation-programmation-en-langage-cCERTyou Formation
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdfAboubacarDiarra10
 
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323Talk Red Hat Entreprise Numerique - Eip Designer - 20160323
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323Laurent Broudoux
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesEric SIBER
 
Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6riyadadva
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Yi YANG
 
Les fonctions.pptx
Les fonctions.pptxLes fonctions.pptx
Les fonctions.pptxsouadsadki2
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdfAhmed12314
 

Ähnlich wie Ce qui compte c'est les valeurs ! Introduction à la programmation fonctionnelle (20)

Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre
 
La programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PFLa programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PF
 
14_PM_chapitre3_Modelisation pour modélisation
14_PM_chapitre3_Modelisation pour modélisation14_PM_chapitre3_Modelisation pour modélisation
14_PM_chapitre3_Modelisation pour modélisation
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erp
 
Cyproc formation-programmation-en-langage-c
Cyproc formation-programmation-en-langage-cCyproc formation-programmation-en-langage-c
Cyproc formation-programmation-en-langage-c
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdf
 
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323Talk Red Hat Entreprise Numerique - Eip Designer - 20160323
Talk Red Hat Entreprise Numerique - Eip Designer - 20160323
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiques
 
Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6
 
Algorithmique iv
Algorithmique ivAlgorithmique iv
Algorithmique iv
 
API Management
API ManagementAPI Management
API Management
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
4D Summit2013 refactoring
4D Summit2013 refactoring4D Summit2013 refactoring
4D Summit2013 refactoring
 
Les fonctions.pptx
Les fonctions.pptxLes fonctions.pptx
Les fonctions.pptx
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Si
SiSi
Si
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 

Kürzlich hochgeladen

GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 

Kürzlich hochgeladen (20)

GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 

Ce qui compte c'est les valeurs ! Introduction à la programmation fonctionnelle

  • 2. Ce qui compte C’est les valeurs ! Introduction à la programmation fonctionnelle
  • 3. Linkvalue | whoami Moi ? @raphaelbacconni 2 Lead Dev Backend @LinkValue • Développeur Web • PHP • Java • Scala, JavaScript • … débute la programmation fonctionnelle avec Scala en janvier 2015 • … apprécie la programmation fonctionnelle depuis ± juillet 2015
  • 4. Why FP matters ? Vous avez dit fonctionnel ? Des programmes comme suite d’applications Sortir du labo SOMMAIRE Linkvalue | sommaire 3 Functions Everywhere Function Closure Memoïsation Function Composition AD T A l g e b r a i c D a t a T y p e s C a l l m e M a y b e T r a i t e r l e s e r r e u r s
  • 5. Linkvalue | Why FP matters ? Vous avez dit “fonctionnelle” ? 4 Qu’est-ce que la programmation fonctionnelle ? • Un nouveau langage ? • Une nouvelle architecture ? • Une manière de rédiger ses tests ? • Un nouveau framework JavaScript ?
  • 6. Linkvalue | Why FP matters ? Vous avez dit “fonctionnelle” ? 5
  • 7. Linkvalue | Why FP matters ? Vous avez dit “fonctionnelle” ? 6 Qu’est-ce que la programmation fonctionnelle ? • Un nouveau langage ? • Non ! Mais les langages exposent des apis dédiées au fonctionnel • Une nouvelle architecture ? • Non ! Mais de nombreux design patterns sont transposables • Oui… de nouvelles architectures en découlent • Une manière de rédiger ses tests ? • Non ! Mais permet d’écrire du code facilement testable • Un nouveau framework JavaScript ? • Non ! Mais il existe de nombreux frameworks FP • … et ce n’est pas non plus (seulement) faire des filter / map / reduce !
  • 8. Linkvalue | Why FP matters ? Des programmes comme suites d’applications 7 Penser mathématiques • Toute expression produit une valeur • Basé sur le lambda calcul (Alonzo Church, 1930’s) : tout est fonction • Influence de la théorie des catégories • Parfois présentée comme opposée à la POO • …
  • 9. Linkvalue | Why FP matters ? Des programmes comme suites d’applications 8 Application informatique • Ne plus raisonner en fonction de changement d’état • Appliquer une fonction sur des inputs produit toujours 1 même résultat • Principe de substitution et transparence référentielle • Fonction « pure » • Données immuables • Lisp (1958), Scheme (1975), Erlang (1987), Haskell (1990) • ML (1973, 1983)
  • 10. Linkvalue | Why FP matters ? Sortir du laboratoire 9
  • 11. Linkvalue | Why FP matters ? Sortir du laboratoire 10 Langages impératifs modernes exposent des API fonctionnelles • Java 8 • C# • PHP • Python • Swift • Ruby • …
  • 12. Linkvalue | Why FP matters ? De nouveaux langages 11 Langages multiparadigmes • Scala • F# • Rust • JavaScript 2015 • Elixir Fonctionnels (presque) purs • Clojure • ELM
  • 13. Linkvalue | Why FP matters ? Quelles technos ? 12 Champs d’application • Traitement de données : Spark, Apex • Messages brokers : Apache Kafka, Rabbitmq • Architectures asynchrones et message driven : Akka • Data streaming : Apache Flink, Akka Stream, Rx* • Serveur web : Playframework, Twitter Finatra, Nodejs • Construction d’IHM : Reactjs, Temporal Logic of Actions
  • 14. Linkvalue | Why FP matters ? Pour qui ? 13 Acteurs et domaines d’application • Banque, assurances : Axa, April, … • Réseaux sociaux : Twitter, LinkedIn, Facebook, WhatsApp, Instagram, … • Streaming : Soundcloud, Spotify, Deezer • Data storage : Dropbox
  • 15. Linkvalue | Why FP matters ? 14
  • 16. W h y F P m a t t e r s ? V o u s a v e z d i t f o n c t i o n n e l ? D e s p r o g r a m m e s c o m m e s u i t e d ’ a p p l i c a t i o n s S o r t i r d u l a b o SOMMAIRE Linkvalue | sommaire 15 Functions Everywhere Function Closure Memoïsation Function Composition AD T A l g e b r a i c D a t a T y p e s C a l l m e M a y b e T r a i t e r l e s e r r e u r s
  • 17. Linkvalue | Functions Everywhere Préambule : coder en scala 16
  • 18. Linkvalue | Functions Everywhere TP : afficher une liste d’utilisateurs 17
  • 19. Linkvalue | Functions Everywhere TP : afficher une liste d’utilisateurs 18 Impératif – Orienté Objet
  • 20. Linkvalue | Functions Everywhere Function as First Class citizen 19
  • 21. Linkvalue | Functions Everywhere Function as First Class citizen 20 Multiparadigme – Approche fonctionnelle
  • 22. Linkvalue | Functions Everywhere Function as First Class citizen 21 Multiparadigme – Approche fonctionnelle
  • 23. Linkvalue | Functions Everywhere TP : Filtrer les utilisateurs en fonction de la conf 22
  • 24. Linkvalue | Functions Everywhere TP : Filtrer les utilisateurs en fonction de la conf 23
  • 25. Linkvalue | Functions Everywhere Closure 24 Principes • Fonction qui peut accéder aux variables du scope • Permet d’embarquer un contexte • Initialiser des valeurs depuis une fonction constructeur
  • 26. Linkvalue | Functions Everywhere Memoïsation : implémenter un cache local 25
  • 27. Linkvalue | Functions Everywhere Memoïsation : implémenter un cache local 26
  • 28. Linkvalue | Functions Everywhere TP : rationaliser l’affichage des infos MeetupGuest 27
  • 29. Linkvalue | Functions Everywhere TP : rationaliser l’affichage des infos MeetupGuest 28
  • 30. Linkvalue | Functions Everywhere TP : rationaliser l’affichage des infos MeetupGuest 29
  • 31. Linkvalue | Functions Everywhere Function composition 30 Principes • Créer une fonction qui appliquera successivement n fonctions • Permet d’appliquer des transformations indépendamment du contexte • Currying & Partiall application function • Allège l’écriture de code
  • 32. Linkvalue | Functions Everywhere TP : composer nos fonctions d’affichage 31 Il nous faut : • Enrichir les fonctions de sélection d’une donnée • Préparer les appels de fonctions avec les paramètres à disposition • Transformer légèrement la fonction d’affichage
  • 33. Linkvalue | Functions Everywhere TP : composer nos fonctions d’affichage 32 Il nous faut : • Enrichir les fonctions de sélection d’une donnée
  • 34. Linkvalue | Functions Everywhere TP : composer nos fonctions d’affichage 33 Il nous faut : • Enrichir les fonctions de sélection d’une donnée • Préparer les appels de fonctions avec les paramètres à disposition
  • 35. Linkvalue | Functions Everywhere TP : composer nos fonctions d’affichage 34 Il nous faut : • Enrichir les fonctions de sélection d’une donnée • Préparer les appels de fonctions avec les paramètres à disposition • Transformer légèrement la fonction d’affichage
  • 36. W h y F P m a t t e r s ? V o u s a v e z d i t f o n c t i o n n e l ? D e s p r o g r a m m e s c o m m e s u i t e d ’ a p p l i c a t i o n s S o r t i r d u l a b o SOMMAIRE Linkvalue | sommaire 35 F u n c t i o n s E v e r yw h e r e F u n c t i o n C l o s u r e M e m o ï s a t i o n F u n c t i o n C o m p o s i t i o n ADT Algebraic Data Types Call me Maybe Traiter les erreurs
  • 37. Linkvalue | Algebraic Data Types Monoïd ! Monad ! Functor ! 36
  • 38. Linkvalue | Algebraic Data Types Algebraic Data Types 37 Présentation • Structures de données • exposent une api d’applications : transformations, morphismes, … • Conteneurs : List, Int, String… • ≠ Objet • Théorie des catégories
  • 39. Linkvalue | Algebraic Data Types En pratique 38
  • 40. Linkvalue | Algebraic Data Types TP : Afficher les infos des amis 39
  • 41. Linkvalue | Algebraic Data Types Gérer les erreurs 40 Call me maybe : le type Option • Conteneur qui contient éventuellement une valeur • None : vide • Some : contient une valeur • Permet d’appliquer des transformations sans avoir à gérer l’absence de résultat • Évite les NullPointerException • Permet de définir une application par défaut en cas d’absence de résultat • Aussi appelé Maybe …
  • 42. Linkvalue | Algebraic Data Types Gérer les erreurs – Option Type 41
  • 43. Linkvalue | Algebraic Data Types Gérer les erreurs – Option Type 42
  • 44. Linkvalue | Algebraic Data Types Gérer les erreurs – Option Type 43
  • 45. Linkvalue | Algebraic Data Types Gérer les erreurs – Option Type 44
  • 46. Linkvalue | Algebraic Data Types Gérer les erreurs – Option Type 45
  • 47. Linkvalue | Algebraic Data Types Gérer les erreurs 46 La liberté c’est de choisir, et choisir c’est renoncer : Le type Either
  • 48. Linkvalue | Algebraic Data Types Traiter les erreurs : Either Type 47 Catégoriser les retours avec Either • Conteneur qui contient distinctement la valeurs calculée par le traitement ou une valeur alternative si le traitement échoue • Left : Contiendra une information sur l’erreur si une erreur survient • Right : Contiendra la valeur telle qu’on l’attend • Dans le meilleur des cas : parcours semblable au parcours d’une Option • On récupère l’erreur sous forme d’une valeur
  • 49. Linkvalue | Pour conclure… Pour conclure 48
  • 50. Linkvalue | Pour conclure… Pour conclure 49 On aime ! • Repenser la manière dont on crée des programmes • Focus sur les traitements et les transformations • Penser valeur • Renvoyer les effets de bord en périphérie du cœur de l’application Does FP rules the world ? • On doit faire avec les effets de bord: le fonctionnel pur est compliqué dans une application d’entreprise • Coût du ticket d’entrée peut être élevé • Haut niveau d’abstraction : certains traitements peuvent être plus performants en mode impératif • Langages multiparadigmes offrent le choix • Possible d’appliquer les concepts de FP dans des langages impératifs
  • 51. Linkvalue | Merci ! Merci ! 50
  • 52. Linkvalue | Références Références 51 Learn • https://twitter.github.io/scala_school/ • http://danielwestheide.com/scala/neophytes.html • https://www.scala-exercises.org/ • https://www.coursera.org/specializations/scala Articles • http://www.vasinov.com/blog/16-months-of-functional-programming/ • https://medium.com/@sinisalouc/demystifying-the-monad-in-scala- cc716bb6f534 • https://www.infoq.com/articles/no-more-mvc-frameworks Books • Functional Programming in Scala, Paul Chiusano and Rúnar Bjarnason, Manning 2014 • Functional Programming Patterns in Scala and Clojure - Write Lean Programs for the JVM, Michael Bevilacqua-Linn, The Pragmatic Bookshelf 2013 • Functional Programming in JavaScript, Dan Mantyla, Packt Publishing 2015 • Mostly adequate Guide to Functional Programming - https://github.com/MostlyAdequate/mostly-adequate-guide
  • 53. www.linkvalue.fr NOUS CONTACTER MAIL TELEPHONEADRESSE Raphaël Bacconnier| Partner Tech raphael.bacconnier@link-value.fr 06 61 32 19 97 01 45 22 30 27 5 rue de la ruche, 69003, Lyon Linkvalue | Nom de la partie 52 108 rue des Dames, 75017, Paris