Prologに人々の単純なデータベースがあるとしましょう
person(john).
person(mary).
person(john).
person(susan).
全体を 1 回だけ一致させる必要があります。
john-mary, john-john, john-susan, mary-john, mary-susan, john-susan
私はこのようなものを考え出そうとしました:
match:- person(X),!,person(Y), write(X),write(-), write(Y),nl.
run:- person(X), match(X), fail.
しかし、それは何度も一致していて、人を自分自身に一致させるべきではありません。
基本的に、私が必要とするのは、すべての X を反復処理し、Prolog が Y を厳密に「下」に見えるようにすることです。