Buduję drzewo ekspresji używając dyskryminowanych związków. Poniższy kod:Czy dyskryminowane związki odnoszą się do siebie nawzajem?
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
Zgłasza błąd, ponieważ BoolExpression nie jest zdefiniowany. Zamiana definicji powoduje tylko odwrotny (IntExpression nie jest zdefiniowany), jak można się spodziewać.
Czy istnieje sposób obejścia tego?
możliwe duplikat [zgłoszeń # Typ przodu f] (http://stackoverflow.com/questions/1378575/f-forward-type-declarations) – Brian
@Brian To to samo pytanie, ale terminologia jest na tyle inna, że nie udało mi się go znaleźć ani w Google, ani w wyszukiwaniu strony. Już samo to może być powodem, aby zostawić obie otwarte. – mavnn