Logo de kxs.frCours d'informatique pour le lycée et la prépa

Énumérations

Définition

Un type énuméré est défini par une suite de constantes commencant par une majuscule. On les sépare par le caractère |.

# type maison = Gryffondor | Poufsouffle | Serdaigle | Serpentard;;
type maison = Gryffondor | Poufsouffle | Serdaigle | Serpentard

Cela revient à définir de nouvelles constantes que l'on peut utiliser normalement :

# let ma_maison = Gryffondor;;
val ma_maison : maison = Gryffondor

Utilisation

Il est ensuite possible d'utiliser ces constantes dans des fonctions :

# let est_gentil = function
| Serpentard -> false
| _ -> true;;
val est_gentil : maison -> bool = <fun>

On peut également utiliser le joker _ pour dire « dans tous les autres cas  ».

Exercices

1) Écrire une fonction choixpeau qui, à partir du nom d'un élève donne sa maison. Le choixpeau n'est pas complêtement aléatoire, s'il reçoit les noms « Harry Potter », « Hermione Granger », « Ron Weasley », « Ginny Weasley » ou « Neville Londubat » il doit renvoyer « Gryffondor » ; s'il reçoit « Luna Lovegood » il doit renvoyer « Serdaigle » ; et s'il reçoit « Drago Malefoy » il doir donner « Serpentard ». Dans tous les autres cas, il renvoie une maison aléatoire. (On pourra utiliser le module Random et sa fonction Random.int n qui renvoie un entier entre 0 et n-1.

# let choixpeau = function
| "Harry Potter" -> Gryffondor
| "Ron Weasley" -> Gryffondor
| "Hermione Granger" -> Gryffondor
| "Neville Londubat" -> Gryffondor
| "Luna Lovegood" -> Serdaigle
| "Drago Malfoy" -> Serpentard
| _ -> let a = Random.int 4 in
if a = 0 then Gryffondor
else if a = 1 then Serdaigle
else if a = 2 then Poufsouffle
else Serpentard;;