クエリに対して一意の回答を返すコードを取得しようとすると問題が発生します。たとえば、
stuff(A,B,C) :- A=C ; B=C.
morestuff([],[],[]).
morestuff([A|AA],[B|BB],[C|CC]) :- stuff(A,B,C), morestuff(AA,BB,CC).
その後、実行中
morestuff([A,A],[A,B],[a,b]).
出力を与えます:
A = a
B = b ? ;
A = a
B = b ? ;
yes.
ご覧のとおり、2 つのソリューションは同じです。PROLOGに一意のソリューションを返す方法はありますか? 出力を与える:
A = a
B = b ? ;
yes.