I stumbled across this problem in F#. Suppose, I want to declare two types that reference each other:
type firstType = | T1 of secondType //.....
You use 'and':
type firstType = | T1 of secondType and secondType = | T1 of firstType