Les monades Scala, Java 8
-
Upload
fabrice-sznajderman -
Category
Software
-
view
432 -
download
2
Transcript of Les monades Scala, Java 8
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éfinitionChapitre 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 monadiquesChapitre 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 codingChapitre 3
Conclusion
• + Lisibilité
• - Complexité
• Il faut garder la maitrise
Option(questions).map( _.answers).getOrElse(“Merci de votre attention!”)