문제

나는 식별 된 노조를 사용하여 표현 나무를 짓고 있습니다.아래 코드 :

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
.

이 작업이 작동합니다 :

type IntExpression =
  ...
and BoolExpression = 
  ...
.

( msdn 의이 페이지 ./ P>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top