(* type variables *)type'a t = 'alistlet f (a : 'alist) : 'a = List.hd a
(* polymorphic variants *)type t = [ `A | `B ]
(* variants *)type result = Sat | Unsat | Unknown(* module and module types *)moduletypeS = sigval compute : unit -> unitendmoduleImpl : S = structlet compute () = ()end