1 2 3 4 5 6 7 8 9 10 11
| {- Le code demandé calcule en fait les parties d'un ensemble
modélisé comme une liste ordonnée .
Le nom anglais pour Parties() est powerset, nous l'utiliserons ici -}
-- powerset prend une liste d'élément et renvoie une liste de listes
powerset :: [a] -> [[a]]
-- la seule partie de l'ensemble vide est l'ensemble vide
powerset [] = [[]]
-- P( {x1} u {x2, x3, .. xn } ) = (U_{p in P( { x2, .. xn } ) {x1} u p) u P( { x2, .. xn } )
powerset (x:xs) = map (x:) psXs ++ psXs
where psXs = powerset xs |
Partager