차별 된 노동 조합이 서로를 언급 할 수 있습니까?
-
27-09-2020 - |
문제
나는 식별 된 노조를 사용하여 표현 나무를 짓고 있습니다.아래 코드 :
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
.
boolexpression이 정의되지 않았기 때문에 오류를 throw합니다.정의를 스와핑하면 역방향 (intexpression이 정의되지 않음)을 기대합니다.
이 주위에 있습니다.
해결책
예, and
를 종속성이있는 그룹 유형 정의로 사용하십시오.
type IntExpression =
| TrueIsOne of BoolExpression
and BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
. 다른 팁
"및"일반적으로 상호 종속성이있는 유형에 따라 작동합니다.즉, MAU, 클래스, 레코드 및 상호 재귀 기능으로 표시된 것처럼 차별 된 노조와 같은 모든 유형에 대해 작동합니다.
비 종단 예 :
let rec foo x = bar x
and bar x = foo x
. 제휴하지 않습니다 StackOverflow