本文介绍了*(星)或其他类型在haddock的实例列表中表示什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

浏览各种软件包的haddocks我经常会看到像这样的实例文​​档():

  MonadTrans(IdentityT *)



这种签名究竟意味着什么?它不会显示在源代码中,但我已经注意到它似乎发生在使用 PolyKinds 扩展名的模块中。我怀疑它可能像一个TypeApplication,但有一种。所以,例如最后一个例子表示如果它的第一个参数是 *

$ b,那么 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的实例列表中表示什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-13 23:34