type recursive print functions define data custom argument function haskell types ghci

function - recursive - En GHCi, ¿por qué el tipo de función flecha `: kind(->)` incluye signos de interrogación `(->):: ??->?->*`



module in haskell (1)

El ? y ?? los tipos se refieren a extensiones de GHC, específicamente tipos sin caja. http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes tiene un diagrama que muestra las relaciones entre los tipos extendidos ? (todos los tipos posibles), # (tipos sin caja), ?? (tipos encajonados o normales sin encajonar - "menos límite superior de # y * "), (#) (tuplas sin encajonar, que solo se pueden utilizar en una pequeña cantidad de contextos). (El tipo estándar * refiere a los tipos de caja normales).

Posible duplicado:
Haskell Weird Kinds: ¿Qué tipo de (->) es ?? ->? -> *

En GHCi (versión 7.0.2), si pido el 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 simplemente usan asteriscos?

Prelude> :kind (,) (,) :: * -> * -> *