Université du Littoral Côte d’Opale M1 Informatique
Programmation Fonctionnelle
Examen 2015-2016, Session 1, Durée 2h
Document autorisé : une feuille de notes manuscrites, comportant votre nom, pas de photocopie
1 Questions de cours (6 points)
1.1 Qu’est-ce-que la programmation fonctionnelle ?
1.2 Citez quatre caractéristiques/fonctionnalités que l’on rencontre généralement dans les langages
fonctionnels.
1.3 Quelles sont les deux grandes catégories historiques de langages fonctionnels ? Citez deux langages
de chaque catégorie.
1.4 Qu’est-ce-que l’évaluation paresseuse ? Citez deux utilisations intéressantes.
1.5 Qu’est-ce-qu’un eet de bord ? Pourquoi dit-on que Haskell est un langage «purement fonction-
nel» et en quoi est-ce intéressant ?
1.6 Qu’est-ce-qu’un type algébrique ? Indiquez notamment comment sont créées et comment sont ma-
nipulées les données avec un type algébrique.
2 Moitiés des entiers pairs (3 points)
2.1 Écrivez une fonction récursive moitiesDesPaires1 qui prend une liste d’entiers et retourne la
liste des moitiés des éléments pairs. Par exemple, avec la liste [13,37,42,12] on aura pour résultat
[21,6].
2.2 Écrivez une fonction moitiesDesPaires2 équivalente mais utilisant une liste en compréhension.
2.3 Écrivez une fonction moitiesDesPaires3 équivalente mais utilisant des traitements de liste (et en
notation «point free»).
3 Fonctions d’ordres supérieurs (4 points)
Soit la fonction suivante :
maxCoupleEntiers (x,y) =max x y
3.1 Quel est l’ordre de cette fonction ? Écrivez sa signature.
3.2 Écrivez une fonction max2entiers (avec sa signature) équivalente mais sous forme curryée. Quel
est son ordre ?
3.3 Écrivez une fonction seuiller0Min qui seuille un entier à 0 au minimum, en utilisant la fonction
max2entiers (par exemple, avec l’entrée 42 on obtiendra 42 et avec l’entrée -42 on obtiendra 0).
Comment appelle-t-on la relation entre seuiller0Min et max2entiers ?
3.4 Écrivez une fonction sommePositifs qui calcule la somme des entiers positifs d’une liste en utilisant
une réduction, une lambda et la fonction seuiller0Min.
4 Récursivité (3 points)
Pour rappel, on peut calculer la somme des éléments d’un ensemble de façon récursive :
S(∅) = 0
S({x1, x2. . .}) = x1+S({x2. . .})
M1-PF-EX1 2015-2016 page 1 / 2