在ml文件中嵌入顶级指令

时间:2015-12-28 17:37:04

标签: ocaml utop

我可能会以错误的方式思考顶层。将顶级指令集合作为项目的一部分进行维护的首选方法是什么?

有没有办法在OCaml源文件中包含onEvent等顶级指令,以便在编译程序时忽略它们,但在运行时由顶层执行?

理想情况下,即使指令本身被忽略,我也希望在编译程序时对指令进行类型检查,例如。

#install_printer

2 个答案:

答案 0 :(得分:2)

没有预定义的方法,但您可以让预处理器在编译时删除该指令。

对于原型的类型检查,你可以做的最好是将它预处理为类似

#install_printer some_function

let _ = (some_function:Format.formatter -> 'a -> unit)

答案 1 :(得分:2)

使用顶层的一个好方法是在项目的根目录下有一个.ocamlinit文件。从同一目录启动utopocaml时会加载此文件。

通常看起来像这样:

#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"库及其依赖项。