En GHCI, ¿por qué el tipo de flecha de funciones `: Kind (->)` incluye signos de interrogación `(->) :: ?? ->?? -> *`? [duplicar
Pregunta
Posible duplicado:
Haskell tipo extraño: tipo de (->) es ?? ->?? -> *
En GHCI (versión 7.0.2), si pido el tipo de tipo de función, el resultado tiene signos de interrogación:
Prelude> :kind (->)
(->) :: ?? -> ? -> *
¿Por qué el tipo incluye signos de interrogación en lugar de solo asteriscos? * -> * -> *
? ¿Qué significan los signos de interrogación? ¿Por qué otros tipos solo usan asteriscos?
Prelude> :kind (,)
(,) :: * -> * -> *
Solución
los ?
y ??
Los tipos se refieren a las extensiones de GHC, específicamente tipos de unboxed. http://hackage.haskell.org/trac/ghc/wiki/intermediatetypes tiene un diagrama que muestra relaciones entre los tipos extendidos ?
(todos los tipos posibles), #
(tipos sin caja), ??
(Tipos de unboxed en caja o normales: "Mínimo límite superior de #
y *
"), (#)
(tuplas sin caja, que solo se pueden usar en un pequeño número de contextos). (El tipo estándar *
se refiere a tipos en caja normales).