Friday, June 7, 2024 Rouen, France

Une ode à la programmation tacite

La programmation fonctionnelle est souvent résumée à la manipulation de fonctions, que l'on peut passer en argument ou renvoyer. En somme, programmer avec des lambdas. Cette flexibilité de la manipulation de fonctions permet d'utiliser des opérateurs pour les composer, donnant lieu à un style de programmation que l'on appelle la "programmation tacite", ou "point-free", relativement populaire dans le monde Haskell, qui permet, malheureusement, très souvent, d'écrire des abominations, rendant le code illisible et incroyablement complexe à raisonner ! C'est pour cela que l'on lit très souvent qu'il n'y a pas de mérite à écrire des programmes dans ce style (et pour cause, une machine peut transformer du code normal en point-free et vice-versa).

Pourtant, il arrive parfois que les outils que l'on veuille manipuler soient "des genres de fonctions, et que la grammaire du langage ne permette pas de les manipuler trivialement. L'utilisation d'un encodage similaire à la programmation tacite est l'utilisation de la méthode .then, en JavaScript, avant l'intégration des marqueurs async/await, dont le rôle était de palier l'expressivité du langage avec une approche abstraite. Dans cette présentation, je vous propose de redécouvrir la programmation tacite, dans des contextes où c'est pertinent, permettant de mettre en avant l'abstraction pour généraliser des comportements. Découvrons ensemble le polymorphisme paramétrique, la variance (ou polarité) et la très amusante famille des profoncteurs et des Arrows pour abstraire l'application de fonctions, permettant de traiter, génériquement, des objets qui ressemblent à des fonctions.

Talk in french
Xavier Van de Woestyne

Xavier Van de Woestyne

Web developer

Tarides