¿Qué es exactamente el tipo "*" en Haskell?

En Haskell, las expresiones (de nivel de valor) se clasifican entipos, que se puede anotar con:: al igual que:3 :: Int, "Hello" :: String, (+ 1) :: Num a => a -> a. Del mismo modo, los tipos se clasifican entipos. En GHCi, puede inspeccionar el tipo de expresión de tipo usando el comando:kind o:k:

> :k Int
Int :: *
> :k Maybe
Maybe :: * -> *
> :k Either
Either :: * -> * -> *
> :k Num
Num :: * -> Constraint
> :k Monad
Monad :: (* -> *) -> Constraint

Hay definiciones flotando alrededor de eso* es el tipo de "tipos concretos" o "valores" o "valores de tiempo de ejecución". Ver, por ejemplo,Learn You A Haskell. ¿Qué tan cierto es eso? Hemos tenidounos pocos preguntas acerca de los tipos que abordan el tema de pasada, pero sería bueno tener una explicación canónica y precisa de*.

Quéexactamente hace* ¿media? ¿Y cómo se relaciona con otros tipos más complejos?

Además, haz elDataKinds oPolyKinds extensiones cambian la respuesta?

Respuestas a la pregunta(3)

Su respuesta a la pregunta