7

我正在使用 Prolog 进行学术项目。我想知道 Prolog 是否有办法与其他编程语言进行交互。我想要的是 Prolog 问题和答案的简单输入/输出重定向。

我知道 Prolog 可以在某些 Prolog 实现中调用 C 函数。即 SWI 序言。

我需要的是 Prolog 问题和用户提供的答案的简单输入/输出重定向。

任何帮助将非常感激。

4

4 回答 4

7

我认为您的任务对外语界面没有任何真正的要求:使用 Prolog IO,它易于使用且高效。您也可以从协议/1 的支持开始。只是一个 KISS 建议...

当您需要用另一种语言实现某些东西时,它是强制性的。

SWI-Prolog C++ 接口它比 C 对应物更容易使用,并且允许使用非常简单的内置代码扩展语言以及将引擎嵌入到独立的“主”中。这两个方面可以优雅地融合在一起:比如说,对于一个快速原型,我们只实现内置函数,并使用 REPL 顶层,而一个完整的应用程序可以启动引擎用作逻辑引擎,并提交(希望通过 REPL 测试) 在后台查询。

然后是JPL接口 SWI-Prolog 和 Java。我对此知之甚少...我在 SWI-Prolog 邮件列表上看到了一些问题,主要是由于不同线程模型的复杂性。但它肯定是有效的。

正在发生一个有趣的开发,以使 IDE 可用于 Eclipse(PDT,Prolog 开发工具)。我认为他们使用自己的 Java 接口。目前可能是比 JPL 更好的选择。

但今天 SWI-Prolog 可以提出的最有趣的接口是 HTTP 服务器基础设施。如果您了解 WEB 客户端开发(HTML/JavaScript/XML/RDF),那么您有很多工具可以在 MVC 客户端/服务器中拆分您的设计。Prolog 运行 Web 服务,富客户端与最终用户交互。这种架构使您的应用程序准备好在本地以及在野外运行。

请参阅相关的“操作方法”部分...这不是一项简单的任务,而是(恕我直言)一项非常有益且长期存在的任务。

于 2012-05-17T21:04:26.740 回答
2

SWI-Prolog 可以与 C ( http://www.swi-prolog.org/pldoc/package/clib.html )、C++ ( http://www.swi-prolog.org/pldoc/package/pl2cpp.html ) 接口)、C# ( http://www.swi-prolog.org/contrib/CSharp.html ) 和 Python ( http://code.google.com/p/pyswip/ )。此外,您可以通过例如外部文件与 Prolog 进行通信。

于 2012-05-17T12:45:51.953 回答
1

看看Amzi Prolog + Logic Server - 它的目的是使 prolog 程序可以作为其他传统语言的组件访问。

于 2012-05-17T16:40:41.237 回答
1

这取决于您使用的 Prolog 发行版。如前所述,SWI-Prolog 为最常见的用途(如 C、C++、数据库、HTTP、XML 等)提供了不同的接口。Ciao发行版对于您正在寻找的内容也很有用。在这种情况下是 C 所以看看这个链接Ciao Prolog and C

于 2012-05-18T15:41:25.460 回答