title: OCaml: is it possible to define mutually recursive data-structures in separate files
body: <p>I am quite beginner of OCaml. 
  I am wondering how to define mutually recursive data-types in separate files.</p>
  
  <p>I know the following program is legal.</p>
  
  <pre><code>type t1 = A of int | B of t2
  and  t2 = C of float | C of t1
  </code></pre>
  
  <p>Now, I want to define this <code>t1</code> and <code>t2</code> in other files for readability (because a lot of util functions are required indivisually).</p>
  
  <p>I also know, I can define <code>t1</code> and <code>t2</code> as above by making <code>.mli</code> files and hide the implementation details (just write <code>type t1</code> and <code>type t2</code> in <code>.mli</code> files).</p>
  
  <p>But, now I don't want hide them.
  Does anyone know how to do it?</p>
  
  <p>I hope simple solution (not use complex or magic one...).</p>