SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Programmation
Fonctionnelle avec Kotlin
DevCon #15 - 3 Nov 2022 - 100% Kotlin
DEVCON#15
3-XI-2022
Riadh MNASRI
DEVCON#15 : MERCI À NOS PARTENAIRES !
PLAN
Qui suis-je ?
C’est quoi une fonction pure ?
Transparence référentielle
Immutabilité
Les fonctions d’ordre supérieur
Kotlin et la programmation fonctionnelle
Pourquoi Arrow-KT ?
C’est quoi une monade ?
Option
Either
Validated
Monoid
Folder une liste
Live Coding/Demo
Conclusion
Qui suis-je ?
Riadh MNASRI
Tech lead / Dev senior passionné
Adepte des pratiques crafts
Je m’intéresse au clean code, programmation fonctionnelle, …
J’aime apprendre et partager mes connaissances
Me contacter sur Linkedin/Twitter (@riadhmnasri)
C’est quoi une fonction pure ?
Retourne toujours le même résultat pour les mêmes
arguments
Doit retourner toujours un résultat
Ne fait pas d’effet de bord (Faire un changement en
dehors de la fonction)
Avantages des fonctions pures
Facile à tester
Facile à comprendre (pas de dépendance cachée ni effet de
bord)
Moins de risque de bugs
Transparence référentielle
Capacité d’une expression ou d’une fonction d’être
remplacée par le résultat de son évaluation sans changer
le résultat d’un programme.
Immutabilité
Un objet est immutable si on ne peut plus changer son
état une fois déclaré
Thread safe/Parallélisme
Pas d’effets de bords cachés
Les fonctions d’ordre supérieur
Est traitée par le compilateur comme n’importe quelle
variable
On peut la passer comme argument, la retourner par une
fonction et l’assigner à une variable
Kotlin et la programmation
fonctionnelle
Immutabilité (val, séparation des collections mutables/lecture, …)
Les fonctions sont d’ordre supérieur
Les classes ‘sealed’
Pattern Matching (expressions when)
Fonctions d’extensions
…
Pourquoi Arrow-KT ?
Pourquoi Arrow-KT ?
Kotlin fournit les outils pour faire la programmation
fonctionnelle
Kotlin n’est pas un langage fonctionnel pur
Arrow.Kt: Librairie fournit des interfaces et des
abstractions de la programmation fonctionnelle.
Implémente les types de données (Either, …) Les types de
classes (Monades, …)
C’est quoi une Monade ?
Functor: un type qui dé
fi
nit comment transformer son
contenu (dé
fi
nit une fonction map() )
Monade: est un functor qui dé
fi
nit une fonction
fl
atMap
Option
Kotlin ne contient pas le mot clé Option
Arrow.kt l’enrichit avec ce type de donné
Either
Permet d’éviter de lancer des exceptions
Garder le contrôle
Représenter les échecs et les exceptions comme valeur du retour
Validated / NonEmptyList
Ressemble à Either
Permet de cumuler plusieurs exceptions
Monad Comprehension
Ecrire du code dans un style séquentiel, un enchainement
d’actions imbriqués
Un style linéaire facile à lire
Similaire aux coroutines/async-wait
Une Monoide 1/2
Notion mathématique: algèbre générale
C’est une structure algébrique
Un ensemble muni d’une loi de composition interne
associative
Dé
fi
nit un élément neutre
Une Monoide 2/2
Une Monoide - Folder une Liste
Permettre de faire des opérations sur une liste
Une fonction pour combiner les éléments de la liste avec
une valeur initiale
Demo/Live Coding
Demo/Live Coding
Code disponible sur mon GitHub (riadh-mnasri)
https:/
/github.com/riadh-mnasri/functional-
programming-with-kotlin-arrowkt
Conclusion
Kotlin fournit tout ce qu’il faut pour faire la
programmation fonctionnelle.
Arrow-KT se base sur la puissance de Kotlin pour fournir
des abstractions/implémentations qui facilite la
programmation fonctionnelle.
References
Functional Programming in Kotlin - Marco Vermeulun, Runar Bjarnason and Paul Chiusano
Functional Kotlin - By Mario Arias and Rivu Chakaborty
https:/
/arrow-kt.io/docs/quickstart/
https:/
/wehightech.github.io/
https:/
/adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
https:/
/www.kodeco.com/7059961-functional-programming-with-kotlin-and-arrow-more-on-
typeclasses
Merci pour votre attention

Contenu connexe

Similaire à Programmation Fonctionnelle avec Kotlin

Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
Gregory Renard
 
Découvrez C# 4.0 et les améliorations apportées à la BCL
Découvrez C# 4.0 et les améliorations apportées à la BCLDécouvrez C# 4.0 et les améliorations apportées à la BCL
Découvrez C# 4.0 et les améliorations apportées à la BCL
DotNetHub
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1
ISIG
 
Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdf
benfifiaymen36
 

Similaire à Programmation Fonctionnelle avec Kotlin (20)

Kotlin arrowkt
Kotlin arrowktKotlin arrowkt
Kotlin arrowkt
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Découvrez C# 4.0 et les améliorations apportées à la BCL
Découvrez C# 4.0 et les améliorations apportées à la BCLDécouvrez C# 4.0 et les améliorations apportées à la BCL
Découvrez C# 4.0 et les améliorations apportées à la BCL
 
compilation1-2020.pdf
compilation1-2020.pdfcompilation1-2020.pdf
compilation1-2020.pdf
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Programmation fonctionnelle avec f#
Programmation fonctionnelle avec f#Programmation fonctionnelle avec f#
Programmation fonctionnelle avec f#
 
C#
C#C#
C#
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studio
 
Cours compilation
Cours compilationCours compilation
Cours compilation
 
Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdf
 
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos SantosXebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Tp introduction java
Tp introduction javaTp introduction java
Tp introduction java
 

Plus de Riadh MNASRI (6)

Ecrire son 1er DSL avec Kotlin
Ecrire son 1er DSL avec KotlinEcrire son 1er DSL avec Kotlin
Ecrire son 1er DSL avec Kotlin
 
Functional programming with streams
Functional programming with streamsFunctional programming with streams
Functional programming with streams
 
BBL Reactive Programming
BBL Reactive ProgrammingBBL Reactive Programming
BBL Reactive Programming
 
Discover Micronaut
Discover MicronautDiscover Micronaut
Discover Micronaut
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservices
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 

Programmation Fonctionnelle avec Kotlin

  • 1. Programmation Fonctionnelle avec Kotlin DevCon #15 - 3 Nov 2022 - 100% Kotlin
  • 3. DEVCON#15 : MERCI À NOS PARTENAIRES !
  • 4. PLAN Qui suis-je ? C’est quoi une fonction pure ? Transparence référentielle Immutabilité Les fonctions d’ordre supérieur Kotlin et la programmation fonctionnelle Pourquoi Arrow-KT ? C’est quoi une monade ? Option Either Validated Monoid Folder une liste Live Coding/Demo Conclusion
  • 5. Qui suis-je ? Riadh MNASRI Tech lead / Dev senior passionné Adepte des pratiques crafts Je m’intéresse au clean code, programmation fonctionnelle, … J’aime apprendre et partager mes connaissances Me contacter sur Linkedin/Twitter (@riadhmnasri)
  • 6. C’est quoi une fonction pure ? Retourne toujours le même résultat pour les mêmes arguments Doit retourner toujours un résultat Ne fait pas d’effet de bord (Faire un changement en dehors de la fonction)
  • 7. Avantages des fonctions pures Facile à tester Facile à comprendre (pas de dépendance cachée ni effet de bord) Moins de risque de bugs
  • 8. Transparence référentielle Capacité d’une expression ou d’une fonction d’être remplacée par le résultat de son évaluation sans changer le résultat d’un programme.
  • 9. Immutabilité Un objet est immutable si on ne peut plus changer son état une fois déclaré Thread safe/Parallélisme Pas d’effets de bords cachés
  • 10. Les fonctions d’ordre supérieur Est traitée par le compilateur comme n’importe quelle variable On peut la passer comme argument, la retourner par une fonction et l’assigner à une variable
  • 11. Kotlin et la programmation fonctionnelle Immutabilité (val, séparation des collections mutables/lecture, …) Les fonctions sont d’ordre supérieur Les classes ‘sealed’ Pattern Matching (expressions when) Fonctions d’extensions …
  • 13. Pourquoi Arrow-KT ? Kotlin fournit les outils pour faire la programmation fonctionnelle Kotlin n’est pas un langage fonctionnel pur Arrow.Kt: Librairie fournit des interfaces et des abstractions de la programmation fonctionnelle. Implémente les types de données (Either, …) Les types de classes (Monades, …)
  • 14. C’est quoi une Monade ? Functor: un type qui dé fi nit comment transformer son contenu (dé fi nit une fonction map() ) Monade: est un functor qui dé fi nit une fonction fl atMap
  • 15. Option Kotlin ne contient pas le mot clé Option Arrow.kt l’enrichit avec ce type de donné
  • 16. Either Permet d’éviter de lancer des exceptions Garder le contrôle Représenter les échecs et les exceptions comme valeur du retour
  • 17. Validated / NonEmptyList Ressemble à Either Permet de cumuler plusieurs exceptions
  • 18. Monad Comprehension Ecrire du code dans un style séquentiel, un enchainement d’actions imbriqués Un style linéaire facile à lire Similaire aux coroutines/async-wait
  • 19. Une Monoide 1/2 Notion mathématique: algèbre générale C’est une structure algébrique Un ensemble muni d’une loi de composition interne associative Dé fi nit un élément neutre
  • 21. Une Monoide - Folder une Liste Permettre de faire des opérations sur une liste Une fonction pour combiner les éléments de la liste avec une valeur initiale
  • 23. Demo/Live Coding Code disponible sur mon GitHub (riadh-mnasri) https:/ /github.com/riadh-mnasri/functional- programming-with-kotlin-arrowkt
  • 24. Conclusion Kotlin fournit tout ce qu’il faut pour faire la programmation fonctionnelle. Arrow-KT se base sur la puissance de Kotlin pour fournir des abstractions/implémentations qui facilite la programmation fonctionnelle.
  • 25. References Functional Programming in Kotlin - Marco Vermeulun, Runar Bjarnason and Paul Chiusano Functional Kotlin - By Mario Arias and Rivu Chakaborty https:/ /arrow-kt.io/docs/quickstart/ https:/ /wehightech.github.io/ https:/ /adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html https:/ /www.kodeco.com/7059961-functional-programming-with-kotlin-and-arrow-more-on- typeclasses
  • 26. Merci pour votre attention