M1 : Programmation Fonctionnelle Avancée

Université de Paris, Faculté des Sciences, Campus des Grands Moulins, UFR d'Informatique

Contenu du cours

La programmation fonctionnelle est née presque en même temps que la programmation impérative, avec le langage Lisp à la fin des années 1950. Utilisée comme paradigme de programmation privilégié dans les années 1970 à 1990 pour l'Intelligence Artificielle, elle demandait des machines puissantes et chères, et paraissait être réservée à des usages très spécialisés. Depuis les années 1990, on dispose de langages fonctionnels avancés qui sont à la fois puissants, expressifs et efficaces. La famille des langages ML (comme OCaml, Haskell, SML/NJ) dispose en plus de méchanismes de typage puissants et sûrs, et d'abstractions qui permettent une programmation concise, comme la définition par cas, les types algébriques, les modules paramétriques, et, dans le cas d'OCaml, aussi un support complet pour la programmation objet. Avec l'essor du Web, des grandes masses de données et des applications distribuées, la programmation fonctionnelle commence à être reconnue comme un des paradigmes les plus adaptés pour construire de façon concise et simple des applications distribuées dans le Cloud. Il suffit de penser au schèma MapReduce popularisé par Google, qui n'est autre qu'une combinaison de deux primitives fonctionnelles connues depuis longtemps.

Ce cours se propose d'approfondir les connaissances des étudiants sur la programmation fonctionnelle, en utilisant pour cela toutes les fonctionnalités du langage OCaml. Système de modules, structures de données fonctionnelles efficaces, calcul paresseux, programmation monadique, usages avancés du système de type, combinateurs, transformations de programmes seront abordés systématiquement dans le cours.