在GHCi(版本7.0.2)中,如果我要求函数类型的类型,结果有问号:
Prelude> :kind (->)
(->) :: ?? -> ? -> *
为什么这种类型包含问号而不仅仅是星号* -> * -> *
?问号是什么意思?为什么其他类型只使用星号?
Prelude> :kind (,)
(,) :: * -> * -> *
答案 0 :(得分:16)
?
和??
种是指GHC扩展,特别是未装箱的类型。 http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes的图表显示了扩展种类?
(所有可能类型),#
(未装箱类型),??
(盒装或普通未装箱类型 - “最低级别)之间的关系#
和*
“)的绑定,(#)
(未装箱的元组,只能在少数情况下使用)。 (标准种类*
指的是正常的盒装类型。)