Je construis un arbre d'expression en utilisant des unions discriminées. Le code ci-dessous:Les syndicats discriminés peuvent-ils se référer les uns aux autres?
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
génère une erreur car BoolExpression n'est pas défini. L'échange des définitions aboutit à l'inverse (IntExpression n'est pas défini) comme vous pouvez vous y attendre.
Y a-t-il un moyen de contourner cela?
double possible (http://stackoverflow.com/questions/1378575/f-forward-type-declarations) – Brian
[F # @ Brian déclarations de type avant] Il est le même question, mais la terminologie est assez différente que je n'ai pas réussi à trouver avec Google ou la recherche du site. Cela seul pourrait être une raison de laisser les deux ouverts. – mavnn