content: ---------------------- Examen Aout A 2023 Haskell --------------------------------
  
  data Couleur = Coeur | Carreau | Pique | Trefle deriving (Show, Eq)
  data Valeur = As | Un | Deux | Trois | Quatre | Cinq | Six | Sept | Huit | Neuf | Dix | Valet | Dame | Roi deriving (Show, Eq, Ord)
  
  -- Type Carte --
  data Carte = Carte Couleur Valeur deriving (Show, Eq)
  
  -- Paquet --
  paquet :: [Carte]
  paquet = [Carte couleur valeur | couleur <- [Coeur, Carreau, Pique, Trefle],
                                   valeur <- [As, Un, Deux, Trois, Quatre, Cinq, Six, Sept, Huit, Neuf, Dix, Valet, Dame, Roi]]
  
  combine :: ([t], [t]) -> ([t], [t]) -> ([t], [t])
  combine (x1, x2) ([], []) = (x1, x2)
  combine (x1, x2) (y1, y2) = (x1 ++ y1, x2 ++ y2)
  
  -- Pioche --
  piocheMains :: [Carte] -> Int -> ([Carte], [Carte])
  piocheMains cartes 0 = ([], [])
  piocheMains (carte1:(carte2:cartes)) n = combine ([carte1], [carte2]) (piocheMains cartes (n-1))
  
  -- Manche --
  manches :: Int -> ([Carte], [Carte]) -> ([Int], [Int])
  manches 0 ([], []) = ([], [])
  manches valeur (carte1:cartes1, carte2:cartes2) = combine (points carte1 carte2) (manches (valeur-1) (cartes1, cartes2))
      where