我有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
?
答案 0 :(得分:5)
遗憾的是,对于ocamldoc的当前实现,这是不可能的:它考虑了约束,但在纯粹的语法层面,它只能在显式sig ... end
时使用它们而不是指代现有标识符(因为分析是在解析的语法树上手动完成的,而不是在键入的树上完成的。)
你可以:
使用.mli
并在那里记录(如果您只提供.mli,则只记录其中的内容)
或使用标记(**/**)
告诉ocamldoc在要保密的功能之前丢弃模块的其余部分,模块类型等。