Reprendre le fichier set.mli des TPs précédents.
Dans un nouveau fichier set.ml, implémenter les ensembles à l'aide des arbres binaires de recherche équilibrés à l'aide de la méthode AVL.
Étant donné un ensemble s : 'a set, une permutation sur s est une liste de type 'a list contenant les éléments de s dans un certain ordre. On cherche à calculer l'ensemble des permutations de s.
'a set -> 'a list set qui renvoie l'ensemble des permutations de son paramètre. On pourra utiliser l'algorithme suivant :
perm(s):
si s est vide
retourner l'ensemble contenant la liste vide
sinon
r ← ∅
pour tout x dans s
r ← r ∪ { x::l | l ∈ perm(s \ { x } }
retourner r
(Bien entendu, on n'utilisera pas de trait impératif, mais on utilisera un fold.)