Prologでプロシージャーを定義する際に問題があります。 私は2つのソースファイルを持っており、両方ともPrologエンジンに相談したいと思っています。 これは、swipl -g "['1.pl'、 '2.pl']としてPrologを呼び出すことで実行できます。Prologで述部を定義する最良の方法
両方のファイルは別のプログラミング言語で書かれた別のプログラムによって生成されており、私はあらかじめファイルの正確な内容を予測することはできません。
問題は時としてルール
predicate2(something):-body
は、ファイルの両方に存在していないと私はエラーを取得し、ファイルのいずれかでルール
predicate1(X):-predicate2(X).
が常に存在することである。しかし述語1に対していくつかのクエリを実行するとき、 "predicate2"は未定義です。
私は述語/ 2が(別のファイルで定義されていない場合にのみ役立ちますファイルの1つに
:- dynamic(predicate2/2).
行が含まれている場合はそうでない場合、私はあなたが再定義したい本当に確信している」のような何かを得ます他のファイルからデータを保存するために何かを再定義する必要はありません。
述語を「定義済み」にする方法がわかりません。 -PrologまたはSICStus Prolog(残念ながら、バージョンには、ビジュアルPrologのような述語を定義するセクションはありません)
あなたは何を試しましたか? –
可能な方法は、predicate2(blablabla ..)のようなものを含めることです。どちらのファイルでも、私はそれが好きではない、時には型predicate2(X)のクエリがあり、X用のセットには "blablabla .."が含まれています。 –
これには特別なコマンドがありますか?私は文書で役に立つ何かを見つけませんでした –