type couleur = Coeur|Carreau|Pique|Trefle;;
type carte = As of couleur|Roi of couleur|Dame of couleur|Valet of couleur|Basse of int*couleur;;
type paquet_de_carte = Derniere of carte|Dessus of carte*paquet_de_carte;;
Dessus(As(Coeur),Dessus(Roi(Trefle),Derniere(Basse(10,Carreau))));;
let rec est_dans_p c p = match (c,p) with
(c,Derniere(c))-> 1
|(c,Derniere(x))-> 0
|(c,Dessus(c,y))-> 1
|(c,Dessus(x,y))-> est_dans_p c y;;
let rec test_4_as p = ((est_dans_p As(Coeur) p)==1)&((est_dans_p As(Carreau) p)==1)&((est_dans_p As(Trefle) p)==1)&((est_dans_p As(Pique) p)==1);;
let couleur c = match c with
(As t)-> t
|(Roi t)-> t
|(Dame t)-> t
|(Valet t)-> t
|(Basse t)-> t;;
let val_c c = match c with
Coeur-> 1
|Carreau-> 2
|Pique-> 3
|Trefle-> 4;;
let rec inserer c p = match p with
Derniere c1-> if val_c (couleur c1)<val_c (couleur c) then Dessus(c,Derniere c1) else Dessus(c1,Derniere c)
|Dessus(c1,p1)-> if val_c (couleur c1)<val_c (couleur c) then Dessus(c,Dessus(c1,p1)) else Dessus(c1,inserer c p1));;
let rec tri p = match p with
Derniere c-> Derniere c
Dessus(c,p1)-> inserer c (tri p1);;
let rec concat p1 p2 = match p1 with
Derniere(x)=Dessus(x,p2)
|Dessus(x1,y1)-> Dessus(x1,(concat y1 p2));;
_________________
LA WII C'EST POURRII
En tout homme résident deux êtres : l'un assoupi dans la lumière, l'autre éveillé dans les ténèbres...