1

SWI-Prolog では、モジュール テキスト ファイルの先頭に次のようなコードを使用しています。

:- module(foo, [bar/2]).
:- use_module(library(jack)).

コードを変更したくありません。それでも ECLiPSe Prolog を使用するにはどうすればよいですか (*)。module/2ECLiPSe Prolog でディレクティブを定義するライブラリはあり ますか?

よろしくお願いします

(*) http://eclipseclp.org/

4

4 に答える 4

2

SWI-Prolog モジュール システムを使用する Prolog モジュールを、Logtalk を使用して ECLiPSe (または、モジュール システムを提供しないものを含む、サポートされているその他の Prolog コンパイラ) で使用するためにコンパイルできます。

于 2014-03-23T19:30:35.160 に答える
1

次のコードは、module/2 を module/3 ディレクティブにマップするマクロを定義します。

:- export macro((:-)/1, translate_directive/2, [top_only]).
translate_directive(
    (:- module(Module, Exports)),
    (:- module(Module, Exports, [swi]))
).

SWI 用に記述されたモジュールをコンパイルする前に、これをコンパイル (またはインポート) します。module/3 の 3 番目の引数には、モジュールが記述されている方言に対応する言語モジュールswiが含まれている必要があることquintusに注意してisoくださいeclipse_language

于 2014-03-24T00:19:12.387 に答える
0

いいえ、 と しかありませmodule/1module/3

ここで利用可能なすべてのリストを参照してください: http://eclipseclp.org/doc/bips/fullindex.html

于 2014-03-23T17:43:02.520 に答える
0

ECLiPSe では、SWI-Prolog (その他)ディレクティブを+ディレクティブmodule/2に置き換えることができます。また、SWI-Prolog と ECLiPSe の両方が、条件付きコンパイル ディレクティブとフラグをサポートしています。これにより、両方のシステムで同じ Prolog ファイルを使用するための別の (テストされていない) 別の方法が提供されます。module/1export/1dialect

:- if(current_prolog_flag(dialect, swi)).

    :- module(foo, [p/1]).

:- elif(current_prolog_flag(dialect, eclipse)).

    :- module(foo).
    :- export(p/1).

:- else.

    ...

:- endif.
于 2014-03-23T22:44:14.587 に答える