如何根据模块签名生成OCaml的文档?

时间:2013-05-07 09:56:01

标签: ocaml ocamldoc

我有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.ml,虽然模块sig声明了interfact,但是doc仍然暴露了模块A中的所有函数,如:

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

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

1 个答案:

答案 0 :(得分:5)

遗憾的是,对于ocamldoc的当前实现,这是不可能的:它考虑了约束,但在纯粹的语法层面,它只能在显式sig ... end时使用它们而不是指代现有标识符(因为分析是在解析的语法树上手动完成的,而不是在键入的树上完成的。)

你可以:

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

  • 或使用标记(**/**)告诉ocamldoc在要保密的功能之前丢弃模块的其余部分,模块类型等。