Nous sommes de plus en plus enclins à utiliser des techniques issues de la programmation fonctionnelle au quotidien : des combinateurs comme map ou filter en lieu et place de boucles, une liste définie en compréhension, un algorithme de type diviser pour régner… Et derrière ces constructions se trouvent des fonctions, le plus souvent récursives.
Et bien sûr, tout le monde sait ce que sont : appel par valeur, par nom, par nécessité ? La récursivité simple, mutuelle ou terminale ? Un trampoline ? Comment est compilé un appel de fonction ? Les conditions pour l'optimiser ?
Si ce n'est pas tout à fait le cas, je vous invite à une session de décorticage des fonctions (éventuellement récursives) qui embrassera des sujets allant de la sémantique abstraite, jusqu'à la traduction en langage machine. Ce sera une occasion de toucher du doigt des notions de mise en œuvre de ces langages que nous utilisons tous les jours, sans vraiment savoir comment ils sont faits.
Mise en garde: cette présentation pourra contenir des traces de coroutines.