我已经看到了一些涉及 OCaml 中的 GUI 编程的线程,但是当需要 GUI 界面时,我觉得它们并没有明确地导致明确的解决方案。
更具体地说,我的问题如下:为 OCaml 软件编写 GUI 时,最有效(且易于掌握)的方法是什么?有没有人接触过 OCaml 本身中简单有效的 GUI 模块,或者找到了一种有效的语言或免费软件包,可以在其中完成并与 OCaml 很好地通信/播放?
我用 OCaml 编写了一个解释器,所以我的词法分析器、解析器、核心解释器函数等都是 OCaml 模块。目前,我有一个命令行解决方案(“main.ml”),它允许用户通过在命令行中输入表达式并接收显示解析和简化表达式等的打印终端输出来与解释器交互。但是,命令行解决方案仅用于测试目的。我希望用户通过 GUI 进行交互,它可以很简单(从很久以前就想到了 Java 框架),但需要以某种方式与我编写的 OCaml 模块进行交互。到目前为止,我在 OCaml 中找到了一个库:http: //caml.inria.fr/pub/docs/manual-ocaml-4.00/manual042.html。有谁知道这是否有效和有用?(我想我'
如果我选择用更优化的语言对 GUI 进行编程,软件交互会是:用合适的语言(可能是 C++、Python 等)编写 GUI,然后将 OCaml 编写的解释器编译成可执行文件,然后以某种方式将 GUI 连接到可执行文件?我对一些松散连接或奇怪的解决方案不感兴趣,通过管道(我一直在考虑这些的进程间通信,例如操作系统设计中所关心的)或套接字(我倾向于将这些用于网络编程),我想象一下,如果不是 OCaml 本身,必须有某种方法将我的 OCaml 编码解释器“容纳”在另一种语言的 GUI 代码中。有什么想法、指导或建议吗?
编辑:如果我能得到一个类似 Linux 的操作系统(即 Linux RedHat)的 GUI,我会很高兴。如果我可以让 GUI 在 Windows 上运行,那就太好了,但至少我的目标是 Linux。
编辑2:刚刚发现这个,有人对“OCaml-Java”有想法吗? http://ocamljava.x9c.fr/ 听起来很有趣,因为它有“...运行使用 ocamlc 编译的 Objective Caml 源代码的能力;第二,将 Objective Caml 源代码编译成可执行 jar 文件的能力。” 我担心的是,Java 是获得快速但有用的 GUI 的最佳方式从来没有让我感到震惊……
当前解决方案:在检查了@Jeffrey Scofield 在下面提出的解决方案帖子中的各种选项后,我选择目前更深入地研究 LablGtk(这将使我能够留在 OCaml 中)。对于那些看这篇文章的人来说,下一个有希望的选择是研究与 C 的外语接口,因为 C 和 OCaml 已经开始建立关系。似乎有在 OCaml 中调用 C 代码和在 C 中调用 OCaml 的方法(尽管这可能非常困难,因为您最终会使用一些复杂的包装函数来包装 OCaml 函数调用,这些函数将更具体到您调用的函数类型在 OCaml-->ie 中,您将不得不处理 C) 中每个 OCaml 函数及其参数的“映射”。看一眼: http://www.mega-nerd.com/erikd/Blog/CodeHacking/Ocaml/calling_ocaml.html, 了解更多信息。OCaml-Java 最初似乎是一个好主意,因为我对 Java GUI 编程很熟悉,但是这两种语言之间的交互不像 C 和 OCaml 那样直接,另外,这方面的文档似乎很薄(并且使用 OCaml -Java 不是你刚刚学习并获得 Java GUI 的东西......)。OCaml-JavaScript 看起来很有趣,但请记住,如果您选择此路径,除了一些 JavaScript 之外,您很可能还需要在良好的 HTML 5 编码设置上投入时间。或者,这里有几篇关于管道和套接字的帖子,它们是创建 GUI 后端系统的有效方法。但是,如果您不介意您的程序系统/产品将“松散耦合”,这是一个好主意。