Parcourir les églefin de divers paquets que je viens souvent le long des documentations d'instance qui ressemblent à ceci (Control.Category):Qu'est-ce que * (étoile) ou d'autres types signifient dans une liste d'instance de haddock
Category k (Coercion k)
Category * (->)
ou ce (Control.Monad.Trans.Identity):
MonadTrans (IdentityT *)
Que signifie exactement la signature de type ici? Il n'apparaît pas dans la source, mais j'ai déjà remarqué qu'il semble se produire dans les modules qui utilisent l'extension PolyKinds. Je suppose que c'est probablement comme un TypeApplication mais avec un genre. Donc, par exemple le dernier exemple signifie que IdentityT
est un transformateur monad si son premier argument a le type *
.
Mes questions sont les suivantes:
- Mon interprétation est correcte et qu'est-ce que la signature de type référence? Par exemple, comment dois-je savoir que
k
est un type et non un type? Ou dois-je juste connaître l'arité deCategory
? - Quel est le code source analogique à cette syntaxe?
Je ne demande pas d'explication sur les types.
D'accord, je considère également cela comme un bug. Peut-être que l'utilisation de 'Category @k (Coercion k)' serait une meilleure notation. – chi
Il existe des cas où il doit spécifier le type de variables de type qui ne sont pas présentes dans le type. Cette combinaison rend vraiment difficile de trouver une façon saine de documenter. – Carl