Vous êtes sur la page 1sur 2

ENSEEIHT  1 Anne Informatique

re

Programmation Fonctionnelle

Sance 4

Ensembles et listes
Objectifs

 Utilisation de listes,
 Spcication, implantation.
Le but de cette srie d'exercices est de reprsenter des ensembles nis par des listes Caml, et d'crire des
fonctions ensemblistes les manipulant. La donne des oprations ensemblistes constitue la spcication
du problme, et les fonctions Caml manipulant des listes en sont une implantation possible. A noter
que spcication et implantation sont gnralement direntes, par exemple une liste peut contenir des
doublons, au contraire d'un ensemble. Les listes manipules sont supposes gnriques, i.e. les ensembles
devront pouvoir contenir des lments d'un type quelconque (le mme pour chaque lment d'un mme
ensemble toutefois). La gnricit est rendue possible car l'galit en Caml est elle-mme gnrique, i.e.
de type 'a -> 'a -> bool.
1

Fonctions sur les listes

 Exercice 1

Ecrire la fonction qui teste si un lment appartient une liste.

 Exercice 2

Ecrire la fonction suivante qui transforme une liste quelconque en ensemble en liminant

les doublons.

set_of_list : 'a list -> 'a list


 Exercice 3 Ecrire un itrateur map sur les listes, tel que l'appel
(map f [e1 ; . . .; en ]) s'value en [(f e1 ); . . .; (f en )].
Quel est le type de map ?

suivant

Fonctions ensemblistes

Dans la suite, on supposera que toutes les listes manipules sont en fait des ensembles et ne contiennent
pas de doublons.
 Exercice 4 (S {e}) Ecrire la fonction
add : 'a -> 'a list -> 'a list.

suivante qui ajoute un lment un ensemble.

Que doit faire cette fonction si l'lment s'y trouve dj ?

Ecrire la fonction suivante implantant l'union ensembliste, sans utiliser la fonction prdnie en Caml de mme nom.

 Exercice 5 (S S 0 )

union : 'a list -> 'a list -> 'a list

Programmation Fonctionnelle
 Exercice 6 (S \ {e}) Ecrire la fonction
remove : 'a -> 'a list -> 'a list.

suivante qui retire un lment un ensemble.

Que doit faire cette fonction si l'lment ne s'y trouve pas ?

 Exercice 7 (S \ S 0 ) Ecrire la fonction suivante


minus : 'a list -> 'a list -> 'a list
 Exercice 8 (f (S)) Ecrire une
Quel est le type de image_of ?

implantant la dirence ensembliste.

fonction image_of calculant l'image d'une fonction sur un ensemble.

Ceci termine la partie obligatoire des exercices raliser en sance. Les suivants sont
rendre votre enseignant pour correction :

On s'intresse l'opration d'union indexe, qui consiste crer un ensemble contenant tous les lments
appartenant au moins l'un des ensembles considrs, et note :
[

eS

o S est l'ensemble indexant et les ensembles e sont les indices.


 Exercice 9

Quel est le type de la fonction union_indexee ralisant l'opration ci-dessus ?

 Exercice 10

Ecrire la fonction union_indexee l'aide de la fonction union.

Vous aimerez peut-être aussi