module Cartes where import Data.Set as Set data Figure = Valet | Cavalier | Dame | Roi deriving (Eq, Ord, Show) data Couleur = Pique | Coeur | Carreau | Trefle deriving (Eq, Show, Ord) data Carte = Valeur (Int, Couleur) | Tete (Figure, Couleur) | Atout Int | Excuse deriving (Eq, Ord) instance Show Carte where show (Excuse) = "Excuse" show (Atout n) = (show n) ++ " d'atout" show (Tete (f,c)) = (show f) ++ " de " ++ (show c) show (Valeur (n,c)) = (show n) ++ " de " ++ (show c) allFigures = [Valet, Cavalier, Dame, Roi] allCouleurs = [Pique, Coeur, Carreau, Trefle] deck :: Set Carte deck = fromList ([Valeur (n,c) | n<-[1..10], c<-allCouleurs] ++ [Tete (f,c) | f<- allFigures, c<- allCouleurs] ++ [Atout n | n<-[1..21]] ++ [Excuse])