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

如何在OCaml程序中动态评估一段OCaml代码?,ocaml,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参考手册中的相关部分是关于的章节(可以找到教程)ocaml\u插件为这个库提供了一个包装器,并自

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

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参考手册中的相关部分是关于的章节(可以找到教程)
ocaml\u插件
为这个库提供了一个包装器,并自动编译代码

否则,您必须先将
.ml
文件编译成
.cmo
文件,然后再使用
dynlink
加载它们,可以是事先加载,也可以从程序中调用编译器(或者,冒险的话,可以直接通过)


在您的示例中,似乎有一个通用模式(即不带参数并返回整数的函数),可以围绕此模式定义一个接口。

OCaml参考手册中的相关部分是(可以找到教程)一章
ocaml\u插件
为这个库提供了一个包装器,并自动编译代码

否则,您必须先将
.ml
文件编译成
.cmo
文件,然后再使用
dynlink
加载它们,可以是事先加载,也可以从程序中调用编译器(或者,冒险的话,可以直接通过)


在您的示例中,似乎有一个通用模式(即,一个不带参数并返回整数的函数),可以围绕此定义一个接口。

您能解释一下为什么要这样做吗?我正在构建自己的运行时图计算器。基本节点是OCaml表达式,例如,
A=let x=100 in x*x
。节点可以是其他节点的公式,例如
b=A*A
。基本节点可以接受任何自包含的OCaml表达式。基本节点的输入更改后,依赖于它的所有节点都将重新计算。您能解释一下为什么要这样做吗?我正在构建自己的运行时图计算器。基本节点是OCaml表达式,例如,
A=let x=100 in x*x
。节点可以是其他节点的公式,例如
b=A*A
。基本节点可以接受任何自包含的OCaml表达式。基本节点的输入更改后,将重新计算依赖于它的所有节点。