Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programmation Fonctionnelle avec Kotlin

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Programmation Fonctionnelle avec Kotlin

Programmation Fonctionnelle avec Kotlin

Avatar for Riadh MNASRI

Riadh MNASRI

October 31, 2022

More Decks by Riadh MNASRI

Other Decks in Technology

Transcript

  1. 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
  2. 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)
  3. 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)
  4. Avantages des fonctions pures Facile à tester Facile à comprendre

    (pas de dépendance cachée ni effet de bord) Moins de risque de bugs
  5. 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.
  6. 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
  7. 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
  8. 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 …
  9. 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, …)
  10. 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
  11. Option Kotlin ne contient pas le mot clé Option Arrow.kt

    l’enrichit avec ce type de donné
  12. Either Permet d’éviter de lancer des exceptions Garder le contrôle

    Représenter les échecs et les exceptions comme valeur du retour
  13. 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
  14. 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
  15. 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
  16. 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.
  17. 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