title: Does F# support interdependent classes in separate files?
body: <p>I'm working on IronJS, and one of our source files is getting very long.</p>
  
  <p>Right now, I'm trying to get .NET interop working.  I'm adding the <code>TryBinaryOperation</code> method to the <code>Undefined</code> so that C# can use the JavaScript semantics of the Undefined value.</p>
  
  <p>However, this introduces a dependency on the <code>Operators</code> type, which causes a circular dependency.</p>
  
  <p>Runtime.fs:</p>
  
  <pre><code>type BoxedValue() =
      struct
          // Contains IsUndefined and get_Undefined, referencing the Undefined class, below.
  
  ...
  
  and type Undefined() =
      inherit DynamicObject()
      ...
      override x.TryBinaryOperation(binder:BinaryOperationBinder, arg:obj, result:obj byref) : bool =
          // Here, we are referencing BoxedValue, above.
          result &lt;- Operators.add(Und, BoxedValue.Box(arg))
          true
  
  ...
  </code></pre>
  
  <p>Operators.fs:</p>
  
  <pre><code>type Operators =
      ...
      // Here, we are referencing BoxedValue.
      static member add(BoxedValue l, BoxedValue r)
          ...
  </code></pre>
  
  <p>So, we have this set of dependencies:<br>
  <img src="https://i.stack.imgur.com/yqSTP.gif" alt="BoxedValue-&gt;Undefined, Undefined-&gt;BoxedValue, Undefined-&gt;Operators, Operators-&gt;BoxedValue"></p>
  
  <p><strong>Ideally, we would like to split each of these into its own file.</strong></p>
  
  <p><strong>Is it possible in F# to have cross-file circular dependencies?</strong></p>