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
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
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
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