Université du Littoral Côte d’Opale M1 Informatique
Programmation Fonctionnelle
Examen 2015-2016, Session 2, Durée 2h
Document autorisé : une feuille de notes manuscrites, comportant votre nom, pas de photocopie
1 Typage (4 points)
Donnez le type des expressions suivantes. Faites attention à donner le type le plus générique possible.
1.1 12 < 37
1.2 ”12”
1.3 12
1.4 f x = x+1
1.5 f x y = [x, y]
1.6 f x y = y : x
1.7 f x y = (x, y)
1.8 f x y = map y x
2 Traitements de listes (4 points)
2.1 Écrivez une fonction supprimer1 qui «supprime» d’une liste tous les éléments d’une valeur donnée,
en utilisant la récursivité.
2.2 Écrivez une fonction supprimer2 équivalente mais qui utilise une liste en compréhension.
2.3 Écrivez une fonction supprimer3 équivalente mais qui utilise des fonctions prédénies (map,foldl...).
2.4 Écrivez une fonction récursive renverser1 qui renverse une liste (retourne une liste avec les élé-
ments dans l’ordre inverse).
2.5 Écrivez une fonction renverser2 équivalente mais qui utilise un foldr.
2.6 Écrivez une fonction renverser3 équivalente mais qui utilise un foldl.
2.7 Écrivez une fonction calculerPS qui calcule le «produit scalaire de deux listes» en utilisant des
fonctions prédénies. Pour rappel :
u ·v =
i
uivi
3 Récursivité (6 points)
1. Écrivez une fonction récursive takeWhile' qui retourne les premiers éléments d’une liste vériant
un prédicat.
2. Écrivez une fonction récursive qui calcule la factorielle (rappel : n! = n×(n1) ×... ×1) . Puis
écrivez une version récursive terminale.
3. Écrivez une fonction récursive triRapide qui calcule une liste d’entiers selon l’algorithme de tri
rapide. Indication : écrivez deux fonctions auxiliaires récursives lesser (resp. greater) qui ltrent
les éléments inférieurs (resp. strictement supérieurs) à un entier.
M1-PF-EX1 2015-2016 page 1 / 2
4 Type algébrique (6 points)
On veut dénir un type de données permettant de représenter des expressions arithmétiques (nombres
et additions uniquement).
1. Écrivez un type algébrique Expr correspondant.
2. Écrivez la valeur de type Expr correspondant à la représentation suivante.
+
+
1 2
+
34
3. Écrivez une fonction evaluer qui permet d’évaluer une expression.
4. Instanciez la classe Show pour votre type Expr. Votre implémentation doit acher l’expression
complètement parenthésée, par exemple ((1 + 2) + 3).
5. Écrivez une fonction concatener qui permet d’ajouter deux expressions. Par exemple, la concaté-
nation de 1+2et 3+4donne 1+2+3+4.
6. Écrivez un main qui crée des expressions 1+2 et 3+4 puis ache leur concaténation et l’évaluation
de celle-ci.
M1-PF-EX1 2015-2016 page 2 / 2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !