3

我有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,接口应该只有do_something().


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

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

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

4

1 回答 1

5

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

您可以:

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

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

于 2013-05-07T12:33:48.623 回答