我正在使用区分的并集构建表达式树。下面的代码:
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
抛出错误,因为未定义BoolExpression。交换定义只会导致相反的结果(未定义IntExpression)。
有没有解决的办法?
最佳答案
是的,使用and
将具有相互依赖关系的类型定义分组:
type IntExpression =
| TrueIsOne of BoolExpression
and BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool