을 함께 즉시 순환 참조를 수정 :는 <a href="https://www.cs.helsinki.fi/u/vihavain/k06/okk/items/minipascalsyntax.html" rel="nofollow noreferrer">this Pascal syntax</a> 무한 유형 선언 지원, 차별 노동 조합
프로그램 :: = 프로그램 식별자 을; 블록 .
블록 :: = 변수 선언 부분 절차 선언 부분 문 부분
절차 선언 부분 :: = {절차 선언 ;}
절차 선언 :: = 절차 식별자 ;
type Program = Identifier * Block and Block = VariableDeclaration list option * ProcedureDeclaration list option * Statement list and ProcedureDeclaration = Identifier * Block
하지만 유형 별칭을 사용하기 때문에 컴파일러는 오류를 던질 것이며, 그들은 컴파일시 삭제됩니다 :
을 차단 나는이 구문 AST 도메인 유형을 만들려고
통한 즉각적인 순환 참조를 포함이러한 유형의 정의는 약어
일부는 wrapped discriminated union 유형으로이 문제를 해결할 수 있다고 말했는데 어떻게해야합니까?