title: Inheritance of modules in OCaml
body: <p>I have already defined an interface and a module:</p>
  
  <pre><code>module type BASE =
    sig
      type 'a base
      val ...
      ...
    end
  
  module base =
    (struct
      type 'a base
      let ...
      ...
    end: BASE) 
  </code></pre>
  
  <p>I would like to define another interface <code>DERIVED</code> inherited from <code>BASE</code>, which includes all the types and signatures of <code>BASE</code>, and has its own types and declarations. Then I could define another module <code>Derived</code> whose type is <code>DERIVED</code>.</p>
  
  <p>Could anyone tell me how to do it? Is it necessarily the object feature of OCaml?</p>
  
  <p>Going further, is it possible to change the names of the types of <code>DERIVED</code>: for instance, it is called <code>'a derived</code> instead of '<code>a base</code>?</p>