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

Jac*_*ale 3 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;;
Run Code Online (Sandbox Code Playgroud)

所以对于我的模块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
Run Code Online (Sandbox Code Playgroud)

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

gas*_*che 5

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

你可以:

  • .mli那里使用和记录(如果你只提供.mli,只记录其中的内容)

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