我正在使用Prolog进行学术项目。我想知道Prolog是否有办法与其他编程语言进行交互。我想要的是一个简单的输入/输出重定向Prolog问题和答案。
我知道Prolog可以在一些Prolog实现中调用C函数。即SWI Prolog。
我需要的是Prolog问题的简单输入/输出重定向以及用户提供的答案。
任何帮助都会非常感激。
答案 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