Estoy construyendo un árbol de expresiones usando uniones discriminadas. El siguiente código:¿Las uniones discriminadas se refieren entre sí?
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
arroja un error porque BoolExpression no está definido. Al intercambiar las definiciones solo se obtiene el resultado inverso (IntExpression no está definido) como era de esperar.
¿Hay alguna forma de evitar esto?
posible duplicado de [declaraciones # tipo hacia adelante F] (http://stackoverflow.com/questions/1378575/f-forward-type-declarations) – Brian
@ Brian Es el misma pregunta, pero la terminología es lo suficientemente diferente como para no encontrarla ni con Google ni con la búsqueda del sitio. Solo eso podría ser una razón para dejar ambos abiertos. – mavnn