В GHCI, почему со стрелкой функции `: kind (->)` включает в себя знаки вопросов `(->) :: ?? ->? -> *`? [дублировать
Вопрос
Возможный дубликат:
Haskell странные виды: вид (->)? ->? -> *
В GHCI (версия 7.0.2), если я попрошу типа функции, результат имеет вопросы вопроса:
Prelude> :kind (->)
(->) :: ?? -> ? -> *
Почему такого рода включает в себя знаки вопросов, а не просто звездочки * -> * -> *
? Что означают следы за вопрос? Почему другие типы просто используют звездочки?
Prelude> :kind (,)
(,) :: * -> * -> *
Решение
А ?
а также ??
Виды относятся к расширениям GHC, в частности, распакованные типы. http://hackage.haskell.org/trac/ghc/wiki/intermediateTypes имеет диаграмму, показывающую отношения между расширенными видами ?
(все возможные типы), #
(распакованные типы), ??
(в штучной упаковке или нормальные распадные типы - «Наименьшая верхняя граница #
а также *
"), (#)
(Переканутые кортежи, которые можно использовать только в небольшом количестве контекстов). (Стандартный вид *
относится к нормальным штучным типам.)