将prolog集成到其他环境中

时间:2012-05-17 11:46:53

标签: prolog swi-prolog

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

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

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

任何帮助都会非常感激。

4 个答案:

答案 0 :(得分:6)

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

当您需要使用其他语言实现的内容时,必须使用外语界面。

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

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

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

但是SWI-Prolog最有趣的界面今天可以提出它是HTTP服务器基础设施。如果您了解WEB客户端开发(HTML / JavaScript / XML / RDF),那么您可以使用大量工具在MVC Client / Server中拆分设计。 Prolog运行Web服务,富客户端与最终用户交互。这种架构使您的应用程序随时可以在本地运行。

请参阅相关的How To部分......这不是一项简单的任务,但(恕我直言)是一个非常有益且长期存在的任务。

答案 1 :(得分:1)

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通信。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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