在OCaml顶层动态加载ml文件吗?

时间:2018-07-13 07:51:42

标签: ocaml ocaml-toplevel

众所周知,我们可以在OCaml顶层使用#use指令来加载ml文件,然后执行。

我们还可以使用ocaml.exe加载和执行ml文件。

在这里,我的要求对这两种情况有一些更改:

我有一个主进程,他创建了一个ocaml顶层来执行脚本,这两个进程与共享内存和stdin / stdout通信。共享内存的地址(令牌)在Sys.argv中给出。

问题是,我想在创建进程后动态加载ml文件,因此首先不给出要执行的ml。

如果我使用“ ocaml.ml xx.ml [params]”启动该过程,该脚本将立即执行,并且在脚本开始之后我不能简单地使用#use指令。

如果进入交互模式,我将无法提供共享地址,因为一旦提供这些婴儿车,它们就会被视为ml文件名。

因此,有人想实现它吗? ocaml顶级是一项后台服务,它调用一个脚本,该脚本一旦启动便进入事件循环。

1 个答案:

答案 0 :(得分:0)

在我看来,您可以在进入事件循环之前将用于通信的参数发送到交互式顶层。

或者您可以使用编译器库直接控制repl并交错Toploop.execute_phraseToploop.use_silently

另一种选择可能是生成本机进程并使用动态链接而不是加载ml文件。