type 'a double =
    Gauche of 'a * 'a double | Droite of 'a double * 'a | Vide;;
let d = Droite (Gauche (1, Droite (Gauche (2, Vide), 3)), 4);;