title: Module dependency cycle
body: <p>I have:</p>
  
  <p><em>Module 1</em>:  </p>
  
  <ul>
  <li>provides type <code>Module1.type1</code>, its constructor, and some functions that accept and return <code>type1</code></li>
  </ul>
  
  <p><em>Module 2</em>:</p>
  
  <ul>
  <li><code>open Module1</code> </li>
  <li><code>open Module3</code>  </li>
  <li>provides type <code>Module2.type2</code>, also has functions that accept <code>type1</code> and <code>type3</code> as params</li>
  </ul>
  
  <p><em>Module 3</em>:</p>
  
  <ul>
  <li><code>open Module1</code></li>
  <li><code>open Module2</code></li>
  <li>provides type <code>Module3.type3</code>, and its constructor that depends on <code>type1</code></li>
  <li>provides functions that accept and return types <code>type1</code>, <code>type2</code> and <code>type3</code></li>
  </ul>
  
  <p><strong>question</strong></p>
  
  <p>as a result I obviously get <code>dependency cycle: src/Module3.cmj -&gt; src/Module2.cmj -&gt; src/Module3.cmj</code> error by compiler. Something that is trivially achievable in TypeScript/JS with individual import, is not possible in Reason. How to get around this?</p>
  
  <p>I don't really want to change the architecture of my program, just to facilitate shortcomings of compiler/module system.</p>