ocaml - 如何根据模块签名为OCaml生成文档?

我有这样的a.ml:

module type ASig = 
  sig 
    val do_something : unit -> int;;
  end ;;

module A:ASig = 
  struct 
    let do_something () = 1;;
    let do_secrectly () = 2;;
  end;;

所以对于我的模块 A,接口(interface)应该只有 do_something()


但是如果我使用 ocamldoc -html a.ml,尽管模块 sig 声明了接口(interface),文档仍然公开了模块 A 中的所有函数,例如:

module A: sig .. end
val do_something : unit -> int
val do_secrectly : unit -> int

我应该如何使用 ocamldoc 以便所有文档都基于 module sig

最佳答案

不幸的是,对于当前的 ocamldoc 实现来说,这是不可能的:它考虑了约束,但在纯语法级别,它只能在它们具有显式形式时使用它们 sig ... end 而不是引用现有的标识符(因为分析是在解析的语法树上手动完成的,而不是在类型树上完成的)。

您可以:

  • 使用 .mli 并在其中记录(如果您只提供 .mli,则只会记录其中的内容)

  • 或使用标记 (**/**) 告诉 ocamldoc 在您希望保持私有(private)的函数之前丢弃模块的其余部分、模块类型等。

https://stackoverflow.com/questions/16416169/

相关文章:

marionette - Backbone Marionette 模块启动,无论 startWith

inheritance - 如何确定一个方法是否定义在 Smalltalk 对象的祖先类中

vbscript - 使用 VBScript 获取 Mac 地址

windows-8 - 是否可以在 Windows 应用商店应用程序中的用户之间共享数据?

forms - Chrome、Safari 和 Opera 不记得简单形式的密码

ember.js - Emberjs 将对象添加到 ArrayController,服务器查询是不可

eclipse - 无法使用 sass-maven-plugin 编译 style.scss

sql - 按连接表数据排序的复杂 SQL 查询

scala - 由于递归隐式(上下文绑定(bind)问题?),spray-json 中的 NPE

class - Coffeescript 未定义类?