Я строю дерево выражений, используя дискриминированные объединения. Код ниже:
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
вызывает ошибку, поскольку BoolExpression не определен. Обмен определениями приводит к обратному (IntExpression не определяется), как и следовало ожидать.
Есть ли способ обойти это?