Hindley–Milner Type Inference 위키 피 디아의 기사를 읽고 있습니다. 지금까지 내가 이해 한 바가 있습니다 :Hindley-Milner 유형 추론의 폴리 유형 이해하기
- 유형은 모노 타입 또는 폴리 타입으로 분류됩니다.
- 모노 유형은
int
또는string
과 같은 유형 상수 또는α
및β
과 같은 유형 변수로 분류됩니다. - 유형 상수는 콘크리트 유형 (예 :
int
및string
)이거나 유형 생성자 (예 :Map
및Set
) 일 수 있습니다. - 유형 변수 (예 :
α
및β
)는 콘크리트 유형 (예 :int
및string
)의 자리 표시 자로 작동합니다.
는 지금은 폴리 타입을 이해하는 약간의 어려움에 봉착하지만 하스켈의 비트를 학습 한 후이 내가 그것을 만들 것입니다 :
- 유형 자체는 유형이있다. 공식적으로 유형의 유형을 유형이라고합니다 (즉, 여러 가지 유형이 있습니다).
- 콘크리트 종류 (
int
와string
등) 및 입력 변수 (α
및β
등)의 종류*
이다. - 타입 생성자 (
Map
및Set
같은) 유형의 람다 추상화 (예를 들어Set
종류* -> *
이며Map
* -> * -> *
종류이다).
한정자는 무엇을 의미합니까? 예를 들어 ∀α.σ
은 무엇을 나타 냅니까? 반면> α 수 -
폴리 타입 ∀α.α있는 기능 : 나는 머리 나하고 더 내가 다음 단락은 더 혼란 내가 얻을 읽기의 꼬리를 만들 수없는 것 동일한 유형의 모든 값을 자체에 매핑하고 identity function은이 유형의 값입니다. 다른 예로서 ∀α. (집합 α) -> int은 모든 유한 집합을 정수로 매핑하는 함수 유형입니다. 구성원 수는이 유형의 값입니다. 예를 들어 유형이 ∀α.α -> ∀α.α과 같이 최상위 수준으로 만 표시 될 수 있으며 유형 구문에 의해 제외되며 해당 유형이 폴리 유형에 포함되므로 유형에 일반 양식 ∀α1. . . ∀αₙ.τ.
하스켈의 유형 정량과 관련하여 [실존 적 유형 개요] (http://www.haskell.org/haskellwiki/Existential_types)는 가치있는 발견이 될 수 있습니다. – ulidtko
시스템 F에 대한 유형 유추는 결정할 수 없지만 유형 확인은 쉽습니다 (형식 검사를 통해 용어에 유형이 주석으로 표시되고 해당 주석이 의미가 있는지 확인하는 경우). – augustss
@augustss typechecking은 주석이 달리지 않은 용어 (카레 스타일)와 유형이 주어 졌음을 의미하며 용어가 유형과 일치하는지 여부를 결정해야합니다. 조웰 (Joe Wells) [2 차 람다 - 미적분학의 형식 및 유형 검사는 동등하고 결정 불가능합니다] (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1)에서 입증 된 것처럼 이것은 결정 불가능합니다. 1.31.3590). –