2011-02-15 2 views
2

그래서 표준 ML에 몇 가지 코드를 작성하고 smlnj로 컴파일하려고했습니다. 이 유형의 내 피상적 인 검사를 기반으로 유형이 일치해야처럼이 보이는 지금SMLNJ에서 typedef를 확장 할 수 있습니까?

Error: operator and operand don't agree [tycon mismatch] 
    operator domain: unit -> Absyn.fundec 
    operand:   unit 
        -> (pos * pos) * 
         ((string * int) * (string * int) * Absyn.tp * Absyn.tp 
         * Absyn.exp) 

: 나는 다음과 같은 오류가 발생했습니다. 나는 일반적인 해결책을 원하기 때문에 그 (것)들에게 말하지 않을 것이다, 나의 부호에있는 결함 아닙니다.

두 형식을 기본 데이터 형식으로 확장하여 서로 다른 점을 파악할 수 있습니까? 모든 typedef가 주위에 떠 다니는 것은 혼란스럽고, 모든 정의에 대해 .sml 파일을 파고 종이에 확장을 쓰는 것은 지루한 해결책처럼 보입니다.

typeof Absyn.fundec 

과 표현의 지옥 종류가 유효한 fundec을 생산할 수 알아낼 :

뭔가처럼 말하고 싶어요.

답변

1

Absyn.fundec은 int, bool 등의 표준 형식이 아니기 때문에 Absyn.fundec 형식이 정의 된 방식을 정확하게 알려주는 데이터 형식이나 형식 선언이 있어야합니다.