The alias problem : Lightweight HK polymorphism

To use higher-kinded polymorphism features in practice, do I need to use a library like Higher_kinded? How may I use these definitions to allow for first-class modules to carry type 'a t instead of a combination of type elt type t?