Ответ 1
Типы ?
и ??
относятся к расширениям GHC, особенно к незанятым типам. http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes имеет диаграмму, показывающую отношения между расширенными типами ?
(все возможные типы), #
(unboxed types), ??
(в коробке или в нормальном unboxed-типах - "наименьшая верхняя граница #
и *
" ), (#)
(unboxed tuples, которые могут использоваться только в небольшом количестве контекстов). (Стандартный тип *
относится к обычным коробчатым типам.)