Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare une entreprise Scribd logo
Les monades
Scala, Java 8
Fabrice Sznajderman - Technozaure juin 2015
Qui suis-je?
• Chez Zenika depuis décembre 2014
• Développeur
• Java / Scala / Web
• Big Data
• Actuellement en mission chez ERDF
Les Monades
Objectifs
• Définition (claire)
• Les types monadiques
• Live coding
Sondage
• Qui connait le terme « monade »?
Sondage
• Qui pense ne jamais avoir utilisé une monade?
Définition
Chapitre 1
Innocence…
Définition formelle
Théorie des catégories
source : Wikipédia
Oh non !
Définition formelle
Définition pragmatique
Une monade, c’est comme une boite …
?
… vide ou ayant un contenu …
… qui fournit des opérations …
?
. Op
… (que l’on peut chaîner) …
?
. Op1
. Op2
. Op3
?
… que l’on va pouvoir appliquer sur le contenu
(présent ou non)
. Op
Opérations
• map()
• flatmap()
• fold()
• foreach()
• filter()
• …
Définition pragmatique
« Une monade est comme une
boite, vide ou ayant un contenu,
qui nous fournit des opérations
au dessus de la valeur
éventuellement encapsulée. »
Les types monadiques
Chapitre 2
Scala
• Option
• Try
• Either
• List
Option
• Présence / absence d’une valeur
• Some / None
Try
• Gestion des exceptions
• Failure / Success
Either
• Gestion de cas d’erreur (~ Try)
• Left / Right
List
• Ensemble d’élément de même type
Java 8
• Optional
• Stream
• Try (https://github.com/jasongoodwin/better-java-monads)
Optional
• Présence / absence d’une valeur
• Pas de sous type
Stream
• Ensemble d’élément de même type
• Flux
Try
• Gestion des exceptions
• Non intégré au JDK
Live coding
Chapitre 3
Conclusion
• + Lisibilité
• - Complexité
• Il faut garder la maitrise
Option(questions).map( _.answers).getOrElse(“Merci de votre attention!”)

Contenu connexe

Les monades Scala, Java 8