我收到ocamldoc
警告:
警告:未找到元素MyModule.VariantName
在文档评论中使用{!MyModule.VariantName}
。
在本章中,我们使用单词 element 来引用OCaml源文件的以下任何部分:类型声明,值,模块,异常,模块类型, 类型构造函数,记录字段,类,类类型,类方法,类值或类继承子句。
以及稍后解释文字格式时:
|
{! string }
插入对名为 string 的元素的引用。 string 必须是完全限定的元素名称,例如Foo.Bar.t
。可以使用以下语法强制引用元素的类型(在各种元素具有相同的限定名称时有用):{! kind : string }
其中种类可以是module
,{{1 }},modtype
,class
,classtype
,val
,type
,exception
,attribute
或method
我可以使用section
引用类型构造函数吗?
第一组元素如何与第二组元素相关?
答案 0 :(得分:3)
在查看实现之后,看起来可以引用变体构造函数,但语法相当奇怪:您必须使用{!typename.constrname}
语法,或者从其他模块{!Modulename.typename.constrname}
使用{!mylist.Cons}
语法。使用下面的代码示例,例如typename.constrname
。这将生成一个超链接,但不幸的是,文本仍然是{!mylist}
,而不仅仅是引用构造函数名称。
(我还了解到有一种“显式”方式告诉ocamldoc所提到的标识符所属的语法类别,我想在一些模糊的情况下提供帮助。所以就像你可以使用{!type:mylist}
或{ {1}}表示类型构造函数,您可以使用{!mylist.Nil}
或{!const:mylist.Nil}
来表示变体构造函数。)
词汇备注:在类型声明中
type 'a mylist =
| Nil
| Cons of 'a * 'a mylist
名称Nil
和Cons
不是称为“类型构造函数”,而只是“构造函数”或“变体构造函数”。类型构造函数是生成在类型而不是值级别的参数化类型(或非参数化,对于常量类型构造函数)的名称,在此示例中为mylist
。