O que * (estrela) ou outros tipos significam em uma lista de instâncias de arinca
Pesquisando os haddocks de vários pacotes, costumo encontrar documentações de instância que se parecem com isso (Control.Category):
Category k (Coercion k)
Category * (->)
ou isto (Control.Monad.Trans.Identity):
MonadTrans (IdentityT *)
O que exatamente aqui significa a assinatura gentil? Ele não aparece na fonte, mas eu já notei que parece ocorrer nos módulos que usam oPolyKinds extensão. Eu suspeito que é provavelmente como um TypeApplication, mas com um tipo. Então, por exemplo o último exemplo significa queIdentityT
é um transformador de mônada, se é o primeiro argumento tem tipo*
.
Então, minhas perguntas são:
Minha interpretação está correta e a que exatamente se refere a assinatura de tipo?Em primeiroCategory
exemplo, como eu deveria saber quek
é um tipo e não um tipo? Ou eu apenas tenho que conhecer a aridade deCategory
?Qual é o código fonte análogo a essa sintaxe?Não estou pedindo uma explicação dos tipos.