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