2012-05-17 9 views
6

私は学術プロジェクトにPrologを使用しています。私は、Prologが他のプログラミング言語とやりとりする方法があるかどうかを知りたかったのです。私が望むのは、Prologの質問と回答の簡単な入出力リダイレクトです。他の環境へのプロローグの統合

Prologの実装では、PrologがC関数を呼び出すことができます。すなわちSWI Prolog。

私が必要とするのは、Prologの質問とユーザーが提供する回答の簡単な入出力リダイレクトです。

本当にありがとうございます。

答えて

6

私はあなたの仕事のための外国語インターフェイスのための真の要件を見ません:Prolog IOを使用して、それは使いやすく効率的です。また、protocol/1からのサポートから始めることもできます。 KISSのアドバイスだけ...

外国語のインターフェイスは、他の言語で実装されたものが必要な場合は必須です。

SWI-Prolog C++ interface SWI-Prolog C++ interfaceこれはC言語よりもはるかに使いやすく、本当に簡単な組み込みコードで言語を拡張することも、スタンドアロンの「メイン」にエンジンを埋め込むこともできます。そして、これらの2つの側面が正常cohexistすることができます(うまくいけばREPLを経由してテストしただけで、我々は組み込みコマンドを実装し、本格的なアプリケーションは、エンジンが論理エンジンとして使用することを開始し、提出することができる一方で、REPLのトップレベルを使用し、高速プロトタイプのために言います)クエリをバックグラウンドで実行します。

SWI-PrologとJavaのインタフェースにはJPLがあります。私はそれについて少し知っています... SWI-Prologメーリングリストで報告されたいくつかの問題は、(主に)異なるスレッドモデルの複雑さのために報告されています。しかし確かにそれは働いている。

IDEをEclipseで利用できるようにする興味深い開発が行われています(PDT、Prolog開発ツール)。自分たちのJavaインターフェースを使うと思う。現在、JPLよりも良い選択肢になる可能性があります。

しかし、今日もっとも興味深いインターフェースSWI-Prologが提案できるのは、HTTPサーバーのインフラです。 WEBクライアント開発(HTML/JavaScript/XML/RDF)が分かっている場合は、MVC Client/Serverでデザインを分割するツールがたくさんあります。 PrologはWebサービスを実行し、リッチ・クライアントはエンド・ユーザーと対話します。このアーキテクチャーは、アプリケーションをローカルでも野生でも実行できるようにします。

関連How Toセクションを参照してください...単純な作業が、(私見)非常にやりがいと長年ものではありません。

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と通信することもできます。

+0

別のオプションは、ソケットを使用して通信することで、このリンクをチェックアウトです。 –

+0

C#インターフェイスもF#で動作します。 – joel76

1

Amzi Prolog + Logic Serverを見てください。その目的は、プロローグプログラムを他の従来の言語のコンポーネントとしてアクセス可能にすることです。

1

使用しているPrologディストリビューションによって異なります。これまでコメントしたように、SWI-PrologはC、C++、データベース、HTTP、XMLなどのような最も一般的な用途向けに異なるインターフェースを提供しています。 Ciaoディストリビューションは、探しているものにも役立ちます。この場合、CはそうCiao Prolog and C

関連する問題