我收到了ocamldoc警告:
警告:找不到元素MyModule.VariantName
在文档注释中使用{!MyModule.VariantName}时。
doc说
在本章中,我们使用word元素引用OCaml源文件的以下任何部分:类型声明、值、模块、异常、模块类型、类型构造函数、记录字段、类、类类型、类方法、类值或类继承子句。
稍后在解释文本格式时:
{! string }插入对名为string的元素的引用。字符串必须是一个完全限定的元素名,例如Foo.Bar.t。引用元素的类型可以强制使用以下语法(当各种元素具有相同的限定名时有用):{! kind : string },其中类可以是module、modtype、class、classtype、val、type、exception、attribute、method或section。
我可以使用{! string }引用类型构造函数吗?
第一组元素和第二组元素有什么关系?
发布于 2013-05-24 21:13:07
在查看了实现之后,似乎可以引用一个变体构造函数,但是使用一种非常奇怪的语法:您必须使用{!typename.constrname}语法,或者使用来自另一个模块的{!Modulename.typename.constrname}。使用下面的代码示例,这将通过{!mylist.Cons}来实现。这将生成一个超链接,但不幸的是,文本仍然是typename.constrname,而不仅仅是引用构造函数名称本身。
(我还了解到,有一种“显式”方法可以告诉ocamldoc所提到的标识符属于哪个语法类别,在某些不明确的情况下,我应该提供帮助。因此,就像您可以使用{!mylist}或{!type:mylist}来表示类型构造函数一样,您也可以使用{!mylist.Nil}或{!const:mylist.Nil}来表示变量构造函数。)
注意:在类型声明中
type 'a mylist =
| Nil
| Cons of 'a * 'a mylist名称Nil和Cons不是称为“类型构造函数”,而是“构造函数”或“变体构造函数”。在本例中,类型构造函数是驻留在类型而不是值级别( mylist )上的参数化类型(或常量类型构造函数的非参数化类型)的名称。
https://stackoverflow.com/questions/16743444
复制相似问题