如何在OCaml程序中动态评估一段OCaml代码?

时间:2017-08-03 14:55:09

标签: ocaml

例如,我想将以下文件动态加载到我的程序中并打印出结果。

input1.txt - >打印100

let x = 10 in x * x

input2.txt - >打印3

let x = 1 and y = 2 in x + y

input3.txt - >打印4

let ls = [1;2;3;4] in List.length ls

ocaml_plugin可能对此项目有用。我想知道如何实现它的更多细节。谢谢!

1 个答案:

答案 0 :(得分:2)

OCaml参考手册中的相关部分是dynlink library上的章节(可以找到here的教程)。 ocaml_plugin提供了一个围绕此库的包装器并自动编译代码。

否则,您必须先将.ml文件编译成.cmo文件,然后再加载dynlink,或者先从程序中调用编译器(或冒险,直接通过compiler front-end)。

在你的例子中,似乎有一个共同的模式(即一个不带参数的函数并返回一个整数),并且可以定义一个接口。