ECTS
5 crédits
Composante
Faculté des Sciences
Description
Ce cours se propose d'introduire le paradigme de programmation fonctionnelle. Dans un premier temps, nous parlerons du lambda-calcul, qui est le modèle de calcul sur lequel repose les langages fonctionnels. Puis, nous enchaînerons avec l'enseignement d'un vrai langage de programmation fonctionnelle, à savoir OCaml.
La présentation d'OCaml suivra principalement le plan suivant :
1. Types de base, définitions.
2. Déclarations de fonctions.
3. Structures de données de base (tuples, listes).
4. Structures de données avancées (types sommes, enregistrements).
5. Exceptions.
6. Fonctions d'ordre supérieur, itérateurs sur les listes.
Si le temps le permet, nous verrons également le système de modules d'OCaml, dont l'une des principales motivations est de regrouper des définitions connexes, mais qui permet également d'introduire de la réutilisabilité par le système de modules paramétrés (foncteurs).
Objectifs
L'objectif de ce cours est de voir un langage de programmation fonctionnelle. Au-delà du langage lui-même, on s'intéressera également à certaines propriétés du domaine du fondement des langages de programmation comme la distinction entre syntaxe et sémantique, l'importance de donner une sémantique formelle au langage, ou la nécessité d'avoir un type fort (c'est-à-dire correct vis-à-vis de la sémantique). Ce cours servira de base à d'autres UE, qui pourront être amenées à utiliser des langages fonctionnels de manière privilégiée comme les UE de logique propositionnelle, de logique du premier ordre ou de vérification.