我可能会以错误的方式思考顶层。将顶级指令集合作为项目的一部分进行维护的首选方法是什么?
有没有办法在OCaml源文件中包含onEvent
等顶级指令,以便在编译程序时忽略它们,但在运行时由顶层执行?
理想情况下,即使指令本身被忽略,我也希望在编译程序时对指令进行类型检查,例如。
#install_printer
答案 0 :(得分:2)
没有预定义的方法,但您可以让预处理器在编译时删除该指令。
对于原型的类型检查,你可以做的最好是将它预处理为类似
#install_printer some_function
到
let _ = (some_function:Format.formatter -> 'a -> unit)
答案 1 :(得分:2)
使用顶层的一个好方法是在项目的根目录下有一个.ocamlinit
文件。从同一目录启动utop
或ocaml
时会加载此文件。
通常看起来像这样:
#use "topfind";; #require "this";; #require "that";; let _printer = ...;; #install_printer _printer;; ...
在相关说明中,如果环境变量OCAMLPATH
设置为/path/to/my/project:...
,并且META
中有正确的/path/to/my/project/foo
文件,则可能使用foo
加载项目本地#require "foo"
库及其依赖项。