私は大学生で、Prolog を初めて使用します。私は現在、適切な prolog-C# ライブラリを使用して Prolog と統合する必要がある C# アプリケーションを開発しています。Prolog.NET (Ali Hodroj によって開発された) は、私のシナリオにとって非常に優れたソリューションであり、私の要件にも合っていることがわかりました。ただし、特定の述語を使用するときに、その述語の代替ソリューションを照会するときに少し問題があります。たとえば、次のような述語
add(X,Y,Ans) :- Ans is X+Y.
ユーザーが X と Y にそれぞれ 1 と 2 を入力した場合は 3 になります。しかし、
female(maria).
female(emma).
parent(bobby, emma).
parent(bobby, maria).
daughter(X,Y) :- parent(X,Y), female(Y).
daughter(X,Y) 述語が daughter(bobby,D) として照会される場合、D には emma と maria の 2 つの値があり、「;」を押すことで反復できます。プロローグ環境で。しかし、Prolog.NET で C# を使用すると、特定の値を 1 つしか取得できません。例えば:
AbstractTerm a = new AbstractTerm();
PrologClass proClass = new PrologClass();
proClass.daughter("bobby", a);
C# 環境から上記の daughter(X,Y) メソッドを呼び出すと、1 つの特定のソリューション (emma) のみが返されます。必要なのは、他のソリューションである maria も取得することです。私は多くのことを試しましたが、何があっても他の値を取得できないようです。誰かがこれを達成する方法を教えていただければ幸いです! それは私のプロジェクト作業にとって大きな助けになるでしょう!
前もって感謝します!:)