在OCaml顶层动态加载ml文件



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

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

在这里,我的需求对这两种情况进行了一些更改:

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

问题是,我想在创建进程后动态加载ml文件,所以一开始没有给出要执行的ml。

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

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

所以有人有实现它的想法吗?ocaml顶层是一个后台服务,它调用一个脚本,该脚本在启动后进入事件循环。

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

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

另一种选择可能是生成一个本地进程,并使用dynlinking而不是加载ml文件。

最新更新