I stumbled across this problem in F#. Suppose, I want to declare two types that reference each other:
type firstType = | T1 of secondType //.....
The limitation is that the types have to be declared in the same file.