问题描述
浏览各种软件包的haddocks我经常会看到像这样的实例文档():
MonadTrans(IdentityT *)
这种签名究竟意味着什么?它不会显示在源代码中,但我已经注意到它似乎发生在使用 PolyKinds 扩展名的模块中。我怀疑它可能像一个TypeApplication,但有一种。所以,例如最后一个例子表示如果它的第一个参数是 *
。
IdentityT
是一个monad转换器。 $ b
所以我的问题是:
- 我的解释是否正确,类签名是指什么?
- 在第一个
Category
实例中,我该如何知道k
是一种而不是一种类型?或者我只需要知道类别
? - 这个语法的源代码类型是什么?
我不是要求解释种类。
:
So yes, as you guessed, it has to do with PolyKinds
. Haddock renders these poly-kinded types with a sort of "explicit kind application". It just so happens that Category
is poly-kinded, having the kind forall k. (k -> k -> *) -> Constraint
, so Haddock renders the kind application alongside each instance.
In my opinion, this is a bug or misfeature of Haddock, since there is no equivalent source code analog as far as I know. It is confusing, and I don’t know of a better way to understand it than to recognize the way it usually manifests and visually infer what’s going on from the context.
这篇关于*(星)或其他类型在haddock的实例列表中表示什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!