(* 2021-10-11 *) (* Shift F5 *) (* DS S45 *) type couleur = Pique | Coeur | Carreau | Trefle type carte = As of couleur | Roi of couleur | Dame of couleur | Valet of couleur | Numero of int * couleur let est_une_figure carte = match carte with Roi _ | Dame _ | Valet _ -> true | As _ | Numero(_, _) -> false let couleur carte = match carte with As c | Roi c | Dame c | Valet c | Numero(_, c) -> c let _ = est_une_figure (Roi Coeur) type mycomplex = C of float * float (* constructeur *) let make_complex x y = C(x, y) (* accesseurs *) let realpart z = let C(x, _) = z in x let imagpart z = let C(_, y) = z in y let c_scal lambda z = make_complex (lambda *. realpart z) (lambda *. imagpart z) (* nouveau type *) type complex = { real: float; imag: float} let make_complex x y = { real = 1.0 ; imag = 0.} let realpart z = z.real let imagpart z = z.imag (* la fonction c_sca est valable pour le nouveau type; à recompiler cependant *) (* introduction aux types récursifs *) (* listes d'entiers *) type intlist = NI | CI of int * intlist