我有这样的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