문제

나를 구현하는 들리-밀 유형 추정 알고리즘,다음과 같은 튜토리얼의 표시 존스올 Kiselyov.이들 모두는"신청인"작업으로 유형을 거의 양식

applyBindings :: TyEnv -> Type -> Type

는 적용 tyvar -> ty 에서 바인딩 TyEnv 을 주어 Type.나는 그것을 발견한 일반적인 실수는 나의 코드를 호출하는 것을 잊지 마십시오 applyBindings, 도에 도움이 되지 않습니켈의 유형 시스템,이후 ty 는 동일한 유형으로 applyBindings tyenv ty.내가 찾는 방법을 집행하는 다음과 같은 고정서에 형식 시스템:

을 할 때 유형추,바인딩을 적용해야 합니다 반환하기 전에'최종 결과

을 할 때 유형추를 위해 단형 개체어가는 자연적인 방법을 적용하므로,이 구현에서'렌 ng 튼의 통일-fd 패키지:우리는 두 가지 정의를 위한 데이터 형식 Types:

-- | Types not containing unification variables
type Type = ...          -- (Fix TypeF) in wren's package

-- | Types possibly containing unification variables
type MutType = ...       -- (MutTerm IntVar TypeF) in wren's package

applyBindings 유형

-- | Apply all bindings, returning Nothing if there are still free variables
-- otherwise just
applyBindings :: TyEnv -> MutType -> Maybe Type

(이 기능은 실제로 freeze . applyBindings 에서 통일-fd).을 적용합니다 우리의 invariant-는 경우에는 우리가 잊지 applyBindings, 다음 우리는 것을 입력 오류가 있습니다.

이 솔루션의 종류 내가 찾는 것이지만,대체 언어와 다형성이다.위의 접근 방식 그대로,적용되지 않으므로,우리는 우리의 언어 형태도 유형 변수--실제로 있을 경우 변수를 무료 후에 적용 바인딩을,우리가 원하지 않을 돌아 Nothing, 지만,우리는 우리가 원하는 일반화하는 이들 변수입니다.

솔루션은 라인을 따라 나는 설명하는,즉중 하나를 제공하는 applyBindings 다른 형식 const id?실제 컴파일러를 사용하여 동일한 말장난(사이 통일을 변수 및 객체지 언어를 입력 변수)시고 올의습니까?

도움이 되었습니까?

해결책

나 산토 도밍고,뿐만 아니라 어둠 속에서 여기에,내가 생각하기 때문에 있을 수 있습니다 다른 문제로 솔루션을 제안,그러나 내가 해결할 수 있는 적어도 하나의 어려움:

  • 당신의 유형이 있어야 합 검사 다른 표현한 통합변수 유형개체-언어 형 변수.

이는 변하지 않는 구현하기 어려운,그리고 사실 나는 생각 구현형 검사는 일은 이 방법으로,적어도 한 시간입니다.를 확인할 수 있습니지 실질적인 유형추를 위한 임의 순위를 유형;부록에 포함되는 많은 매우 유용 코드입니다.

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