gpt4 book ai didi

user-interface - OCaml:GUI编程的有效途径?

转载 作者:行者123 更新时间:2023-12-03 12:58:09 26 4
gpt4 key购买 nike

我已经看到了一些涉及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,我会很高兴。如果可以在Windows上运行GUI,那将很棒,但是至少我的目标是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,以获取更多信息。鉴于我对Java GUI编程很满意,所以OCaml-Java最初似乎是一个好主意,但是两种语言之间的交互并不像C和OCaml那样直接,此外,有关此文档的文档似乎很苗条(并且使用OCaml -Java不是您刚接触并获得Java GUI东西的东西...)。 OCaml-JavaScript看起来很有趣,但是请记住,如果您选择此路径,那么除了一些JavaScript之外,您极有可能不得不花时间在良好的HTML 5编码设置上。
另外,SO中有几篇文章讨论管道和套接字,它们是创建GUI后端系统的有效方法。但是,如果您不介意程序系统/产品将“松散耦合”,那么这是个好主意。
一旦弄清LablGtk并确保它为我的OCaml后端代码提供可接受的GUI前端,我将更新此解决方案。

最佳答案

我认为LablGtk工具箱是相当最新的,并且目前正在维护。因此,这将是一种选择。但是,我自己没有使用过它。

将一组OCaml模块链接到用C,C ++或Objective C编写的主程序中并不是很困难。您可以或多或少地直接调用OCaml函数并获取结果。为此,您需要学习外来功能接口,一旦您精通该功能,就不会那么困难。然后,您可以使用C系列方面喜欢的任何GUI库。如果您对这种方法感兴趣,可以从OCaml手册的Chapter 19开始。

您可以使用C中介链接其他语言,具体取决于语言。对于一种解释语言,您可以将OCaml函数添加为新的原语。 (根据我的经验,口译员通常是用C或C ++编写的。)

对于Java,有OCaml-Java(如您所述)。我自己没有使用过,但是很有趣。我相信JVM会施加一些限制,因此您可能需要在编码时格外小心。

对于Web应用程序,有js-of-ocaml,可将OCaml编译为JavaScript。

关于user-interface - OCaml:GUI编程的有效途径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com