1

SWI-Prolog クエリから出力を 1 つだけ取得するにはどうすればよいですか? カット ( !) を使用してみましたが、うまくいかないようです。

例:私はすでに自分の知識ベースをステートメントで満たしていて、女性であり、誰かの母親である名前を見つけたいと思っていました。

私はすでに試しました:

mother(X,Y), female(X).

...しかし、それは私にすべてを与えX-__ますY-__

私も試しました:

mother(X,Y), female(X), !.

...しかし、それでもX-__との両方が得られますY__

を見つけたいだけですX。どうにかして1つだけ入手するためのヒントはありますか?

4

1 に答える 1

2
?- setof(t, Y^ ( mother(X, Y), female(Y) ), _).

これにより、重複(冗長な回答/ソリューション)も削除されます。または使用library(lambda)

?- X+\ ( mother(X, Y), female(Y) ).

冗長な回答は削除されません。

于 2015-02-25T01:49:42.230 に答える