python - 在 python 中集成 OCaml - 如何从 python 中保持 ocaml session ?

标签 python ocaml integration

我想要一个 python GUI 在后台有一个 OCaml 进程。我想在程序的整个生命周期中保持一个 session ,并根据用户输入调用一些 OCaml 命令并检索 OCaml 的输出。一些 OCaml 变量和结构可能会在此过程中定义,因此我想维护一个正在进行的 session 。

我的解决方案是使用 popen 保持 OCaml 顶层进程并与其标准输入和标准输出交互。由于以下几个原因,这纯粹对我有用: 1. 我不知道 OCaml 计算何时完成,也不知道它的输出是否完整或还有更多输出(特别是如果评估需要一些时间,并且如果调用了多个 OCaml 命令)。 2. 我没有固有的方法来判断 OCaml 命令是否运行顺利,或者可能有 OCaml 警告或错误。 3. 我丢失了 OCaml 输出的结构。例如,如果输出分布在多行上,我无法分辨哪些行由于行大小而被断开,哪些行原本是单独的行。

我知道有一些讨论和一些包将 python 与 OCaml 相结合,但它们都从 OCaml 运行 python 命令,而我需要相反的东西。

最佳答案

如果你想在一个单独的进程中运行 OCaml,你需要将你的 OCaml 调用包装在一个函数中,该函数收集所有结果并以有用的序列化格式返回它们,例如JSON。或者,您可以尝试编写一个使用 OCaml toplevel as a library 的 Python C 扩展。 ,但这可能需要相当多的工作。

关于python - 在 python 中集成 OCaml - 如何从 python 中保持 ocaml session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479510/

相关文章:

Twitter 集成 :consumer key/secret pair already set

python - 如何关闭线程并退出到命令行?

python - 在配置表中按行保存数据与在 Postgres JSONField 中保存为键——哪个更好?

ocaml - 使用 dynlink 加载模块重新初始化顶层值

function - OCaml - 将递归函数的值保存在哈希表中

asp.net - 将我的网站与 BlogEngine.Net 集成

Python range( ) 没有给我一个列表

python - 提交时刷新表单 - Django

algorithm - 将数字添加到函数 OCaml 中的列表

Java EE 与 .NET 集成以进行身份​​验证