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 (,)
(,) :: * -> * -> *