在ocamldoc中引用类型构造函数

时间:2013-05-24 20:48:39

标签: ocaml ocamldoc

我收到ocamldoc警告:

  

警告:未找到元素MyModule.VariantName

在文档评论中使用{!MyModule.VariantName}


ocamldoc doc

  

在本章中,我们使用单词 element 来引用OCaml源文件的以下任何部分:类型声明,值,模块,异常,模块类型, 类型构造函数,记录字段,类,类类型,类方法,类值或类继承子句。

以及稍后解释文字格式时:

  

| {! string }插入对名为 string 的元素的引用。 string 必须是完全限定的元素名称,例如Foo.Bar.t。可以使用以下语法强制引用元素的类型(在各种元素具有相同的限定名称时有用):{! kind : string }其中种类可以是module,{{1 }},modtypeclassclasstypevaltypeexceptionattributemethod

我可以使用section引用类型构造函数吗?

第一组元素如何与第二组元素相关?

1 个答案:

答案 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

名称NilCons 不是称为“类型构造函数”,而只是“构造函数”或“变体构造函数”。类型构造函数是生成在类型而不是值级别的参数化类型(或非参数化,对于常量类型构造函数)的名称,在此示例中为mylist