18

可能重复:
Haskell 奇怪的种类:(->) 的种类是 ?? ->?-> *

在 GHCi(版本 7.0.2)中,如果我询问函数类型的种类,结果会带有问号:

Prelude> :kind (->)
(->) :: ?? -> ? -> *

为什么这种类型包括问号而不仅仅是星号* -> * -> *?问号是什么意思?为什么其他类型只使用星号?

Prelude> :kind (,)
(,) :: * -> * -> *
4

1 回答 1

16

???种类指的是 GHC 扩展,特别是未装箱的类型 。http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes有一个图表显示了扩展类型?(所有可能的类型)、#(未装箱类型)、??(装箱或普通未装箱类型——“#*"), (#)(未装箱的元组,只能在少数上下文中使用)。(标准类型*是指普通盒装类型。)

于 2011-03-19T02:56:35.893 回答