~~NOTOC~~ ====== Programmation Fonctionnelle Avancée ====== ===== Description ===== La programmation fonctionnelle est un des paradigmes principaux de programmation que tout informaticien doit connaître. En particulier, elle permet de programmer très facilement avec des types de données structurées (comme lors de la conception de compilateur). Cette forme de programmation sans état est également très importante pour le calcul distribué (voir MapReduce). On retrouve désormais des aspects de programmation fonctionnelle dans des langages aussi répandus que Java et Python. Néanmoins, l'utilisation d'un langage dédié est recommandé pour profiter au mieux des possibilités de ce paradigme de programmation, en particulier au niveau du typage. C'est pourquoi ce cours s'appuiera sur le langage OCaml. Ce module fait suite au cours de programmation fonctionnelle de licence 3 (PF5) et se concentre directement sur un certain nombre d'aspects avancés de la programmation fonctionnelle et d'OCaml en particulier (modules, paresse, monades, etc). Ce module est un module majeur du parcours LP (Langages et Programmation). ===== Syllabus ===== ==== Sujets centraux ==== - Le système de modules - Structure de données efficaces pour la programmation fonctionnelle - Evaluation paresseuse - Structures avec partage - Utilisation avancée du système de typage (variants polymorphes, GADT) - Monades ==== Sujets potentiellement traités ==== - Combinateurs - Parallélisme (Parmap) ===== Pré-requis ===== Avoir suivi un premier cours de programmation fonctionnelle, comme par exemple le [[..:..:..:licence:2024-2025:ue:l3:pf5|cours PF5 de licence 3 ici-même]].