sig module type Non_immediate = sig type t end module type Immediate = sig type t [@@immediate] end module Make : functor (Immediate : Immediate) (Non_immediate : Non_immediate) -> sig type t [@@immediate64] type 'a repr = Immediate : Sys.Immediate64.Immediate.t Sys.Immediate64.Make.repr | Non_immediate : Sys.Immediate64.Non_immediate.t Sys.Immediate64.Make.repr val repr : Sys.Immediate64.Make.t Sys.Immediate64.Make.repr end end