在 GHCi(版本 7.0.2)中,如果我询问函数类型的种类,结果会带有问号:
Prelude> :kind (->)
(->) :: ?? -> ? -> *
为什么这种类型包括问号而不仅仅是星号* -> * -> *
?问号是什么意思?为什么其他类型只使用星号?
Prelude> :kind (,)
(,) :: * -> * -> *
在 GHCi(版本 7.0.2)中,如果我询问函数类型的种类,结果会带有问号:
Prelude> :kind (->)
(->) :: ?? -> ? -> *
为什么这种类型包括问号而不仅仅是星号* -> * -> *
?问号是什么意思?为什么其他类型只使用星号?
Prelude> :kind (,)
(,) :: * -> * -> *
?
和??
种类指的是 GHC 扩展,特别是未装箱的类型 。http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes有一个图表显示了扩展类型?
(所有可能的类型)、#
(未装箱类型)、??
(装箱或普通未装箱类型——“#
和*
"), (#)
(未装箱的元组,只能在少数上下文中使用)。(标准类型*
是指普通盒装类型。)