Sto costruendo un albero di espressioni usando le unioni discriminate. Il seguente codice:Le unioni discriminate possono riferirsi a vicenda?
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
genera un errore perché BoolExpression non è definito. Scambiando le definizioni si ottengono solo risultati inversi (IntExpression non è definita) come ci si aspetterebbe.
C'è un modo per aggirare questo?
possibile duplicato del [dichiarazioni # tipo in avanti F] (http://stackoverflow.com/questions/1378575/f-forward-type-declarations) – Brian
@ Brian E 'il stessa domanda, ma la terminologia è abbastanza diversa da non riuscire a trovarla con Google o con la ricerca del sito. Solo questo potrebbe essere un motivo per lasciare entrambi aperti. – mavnn