2011-03-19 3 views
18

가능한 중복 :GHCi에서 arrow : kind (->) 함수의 종류가 왜 물음표`(->) :: ??를 포함합니까? ->? -> *`?

Prelude> :kind (->) 
(->) :: ?? -> ? -> * 
: 나는 함수 타입의 종류를 요청할 경우

Haskell Weird Kinds: Kind of (->) is ?? -> ? -> *

GHCi에서

(버전 7.0.2)은, 결과는 물음표를 가지고

왜 종류에 별표 대신 물음표가 포함됩니까 * -> * -> *? 의문점은 무엇을 의미합니까? 왜 다른 유형은 별표를 사용합니까?

Prelude> :kind (,) 
(,) :: * -> * -> * 
+1

IMH, 나는 GHCi에 특별한 pragma가 주어지면 GHC가 초보자를 혼란스럽게하기 때문에 GHC가이 확장 된 문맥만을 표시한다면 더 좋아할 것입니다. – fuz

+1

Don Stewart의 자세한 설명 [여기] (http://stackoverflow.com/questions/3034264/haskell-weird-kinds/3034295#3034295)도 참조하십시오. –

답변

16

???가지는 GHC 확장, 특히 언 박싱 유형을 참조하십시오. 이는 단지 수 (#) (박스 없음 튜플 - ("#* 적어도 상한"박스 또는 일반 박스 없음 타입) http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes는 확장 가지의 관계 ? (모든 가능한 타입) # (박스 없음 타입) ??를 나타내는 도면을 갖는다 적은 수의 문맥에서 사용됨). (표준 종류 *은 일반 박스형을 참조합니다.)