&引用;“评估”;OCaml中的字符串

&引用;“评估”;OCaml中的字符串,ocaml,eval,Ocaml,Eval,我试图“eval”一个表示OCaml中的OCaml表达式的字符串。我希望做一些与Python相当的事情 到目前为止,我还没有找到多少。该模块看起来可能会有所帮助,但我无法找到一种仅计算字符串的方法。OCaml是一种编译(而非解释)语言。所以没有简单的方法可以做到这一点。当然,没有支持它的语言特性(几乎每种解释语言都有)。您最好将您的程序与OCaml顶级(OCaml解释器)链接起来。以下是如何操作,但我没有告诉您。(解析模块也是关于解析的,而不是执行代码) 例如: eval "let () = p

我试图“eval”一个表示OCaml中的OCaml表达式的字符串。我希望做一些与Python相当的事情


到目前为止,我还没有找到多少。该模块看起来可能会有所帮助,但我无法找到一种仅计算字符串的方法。

OCaml是一种编译(而非解释)语言。所以没有简单的方法可以做到这一点。当然,没有支持它的语言特性(几乎每种解释语言都有)。您最好将您的程序与OCaml顶级(OCaml解释器)链接起来。

以下是如何操作,但我没有告诉您。(解析模块也是关于解析的,而不是执行代码)

例如:

eval "let () = print_endline \"hello\";;"
注意后面的


要使用
ocamlbuild
,您需要同时使用
compiler libs
compiler libs.toplevel

我正在考虑使用top-level或utop的功能。如何与之链接以提供类似eval的功能?我认为这是一个有用的文件,但我不知道如何使用它。此外,这似乎是顶层使用的实际解析器:@lezed1您可以这样做……即在文件上编译它,然后执行代码,但这是在OCaml中编写代码的错误方式。(编译器libs是查看的地方)您能详细介绍一下您的具体用例吗?这个答案在UTop中绝对有效,但我在使用ocamlbuild时遇到了麻烦。我需要相同的“编译器libs”包(
-pkg编译器libs
),但是获取对未定义的全局“Toploop”的错误
引用实际上,我找到了它并编辑了您的答案以反映正确的包@lezed1好的,但我真的建议你不要使用这个,它完全是在类型系统的侧面。你会如何处理错误?
eval "let () = print_endline \"hello\";;"