17

私は自分のPrologコードをモジュール式に保とうとしていますが、これを行う方法について誰かがアドバイスを持っているかどうか疑問に思いました。私がこれを単純なconsultsで行っていた方法ですが、ファイルの数が増えて名前の衝突に屈するにつれて、それは面倒になります。「典型的な」インポートと同様の構成はありますか?

%-------------------------------------------------------------------- compiler.pl

[ scanner, parser, codegen ] .

%-------------------------------------------------------------------- compile

% compile( S, I ) :- Compiling the source string S gives the list of instructions
%                    I

compile( S, I ) :- scan( S, T ), parse( T, A ), codegen( A, I ) .

%-------------------------------------------------------------------------------%

ソースファイルの先頭にありますか?プログラム固有の場合は、を使用してgprologいます。助けてくれてありがとう。

4

3 に答える 3

11

GNU-Prolog には正規のモジュール システムがないため、現時点ではあなたのアプローチが最善です。おそらく、GNU-Prolog は将来モジュール システムを追加するかもしれませんが、私はそれにビジネスを賭けることはしません。

最も頻繁なモジュール システムでは、同じ述語名とアリティを持つ異なるモジュール述語を定義できます。これにより、述語の名前の衝突が回避されます。アトムとファンクターは、モジュールの境界を超えて同じままです。SICStus、YAP、SWI、Ciao、IF、ISO 規格などのシステムには、このようなシステムがあります。

もう 1 つの種類のモジュール システムが XSB によって提供されます - ファンクタ ベースと呼ばれます。

于 2011-07-14T15:42:42.120 に答える
8

GNU Prolog 1.4.0 の安定版リリースを完全にサポートする最新の Logtalk 開発リリースを入手してください。Subversion チェックアウトまたは Git クローンを実行することで取得できます (詳細については、http://logtalk.org/download.htmlを参照してください)。または、個人的にメールを送っていただければ、インストーラーを作成します。Logtalk は、大規模なプログラミングのためにゼロから設計されました。これを使用して移植可能なアプリケーションを作成できます (Logtalk は 9 つの異なる Prolog コンパイラでそのまま実行されます)。これを使用して、モジュール システムを含まない GNU Prolog などの Prolog コンパイラで Prolog モジュール コードを実行することもできます。Logtalk には、100 を超えるサンプル、移植可能なライブラリ、移植可能な開発者ツール、および完全なドキュメントが付属しています。Prolog から Logtalk への移行は非常に簡単です。移植可能なコードを書くことは、毎日移植することよりも優れています;-)

于 2011-07-15T00:30:51.417 に答える
4

偽りの言ったことは正しい。
ただし、複数の Prolog (GNU-Prolog を含む) の上にモジュール システムと OO システムを実装する Logtalk を検討することもできます。

http://logtalk.org/faq.html#general-3

http://logtalk.org/

于 2011-07-14T17:22:51.657 に答える