(* type produit *) let x,s= (1,"bonjour");; let f x = x,x;; (* type récursif *) type intlist = NI | CI of int * intlist;; let rec longueur_impaire l = match l with NI -> true | CI(_,NI) -> false | CI(_,CI(_,lp)) -> longueur_impaire lp;; (* types polymorphes *) type ('a,'b) couple = 'a*'b;; let f (c :('a,'b) couple) n = if n = 0 then fst c else snd c;; let g (c :('a,'b) couple) n = if n = 0 then (fst c) +. 1. else snd c;;