Université de Rouen Normandie UFR sciences et techniques
Licence 2informatique et mathématiques 2021–2022
Bases de la programmation fonctionnelle Travaux dirigés
{jean-philippe.dubernard, eric.laugerotte}@univ-rouen.fr 2/2
Université de Rouen Normandie UFR sciences et techniques
Licence 2informatique et mathématiques 2021–2022
Bases de la programmation fonctionnelle Travaux dirigés
{jean-philippe.dubernard, eric.laugerotte}@univ-rouen.fr 2/2
Université de Rouen Normandie UFR sciences et techniques
Licence 2informatique et mathématiques 2021–2022
Bases de la programmation fonctionnelle Travaux dirigés
{jean-philippe.dubernard, eric.laugerotte}@univ-rouen.fr 2/2
2Liste
Exercice 3(Liste à un seul type)
Une liste contenant des valeurs d’un certain type se définit récursivement de la façon suivante :
• soit elle est vide;
• soit elle est constituée d’une tête qui est une valeur et d’une queue qui est une liste.
1. Créer le type liste.
2. Donner une liste à quatre éléments.
3. Écrire la fonction insere qui insère une valeur dans une liste.
4. Déterminer l’analogue de la fonction List.fold_left.
5. En déduire la longueur d’une telle liste.
Exercice 4(Liste à plusieurs types)
On souhaite manipuler des listes contenant des valeurs de trois types différents à la fois sans utiliser
le type list.
1. Définir le type liste_3 qui correspond à cette utilisation.
2. Donner une expression qui crée une valeur de type liste_3 avec deux entiers, un flottant et
un caractère.
3. Écrire les fonctions qui ajoutent un élément selon son type dans une liste de type liste_3.
4. Écrire une fonction longueur qui calcule la longueur d’une liste de type liste_3.
5. Écrire la fonction renv qui renverse les éléments d’une liste de type liste_3.
6. Écrire la fonction concat qui concatène deux listes de type liste_3.
Exercice 5(File)
Une file stocke des éléments de même type. Les éléments sont retirés d’une file selon leur ordre
d’insertion. C’est le fonctionnement d’une file d’attente. Une file peut s’implanter efficacement à
l’aide de deux listes :
• la première liste contient les premiers éléments entrés dans la file, la tête étant le premier
entré dans la file;
• la seconde liste contient les derniers éléments entrés dans la file, la tête étant le dernier entré
dans la file.
Lorsque la première liste est vide, on la remplit à l’aide de la seconde.
1. Déterminer un type pour les files.
2. Écrire la fonction enfiler qui ajoute un élément à une file.
3. Écrire la fonction defiler qui extrait un élément à une file.