如何从swi-prolog查询中只获得一个输出?

时间:2015-02-25 01:40:48

标签: prolog prolog-toplevel prolog-setof

如何从SWI-Prolog查询中只获得一个输出?我尝试过使用cut(!),但它似乎不起作用。

例如: 我已经用语句填充了我的知识库,我想找到任何一个既是女性又是某人的母亲的名字。

我已经尝试过了:

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

...但是这给了我所有的X-__Y-__

我也尝试过:

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

...但这仍然给了我X-__Y__

我只想找到X。有没有人对我有任何提示,只能得到一个?

1 个答案:

答案 0 :(得分:2)

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

也将删除重复项(冗余答案/解决方案)。或者使用library(lambda)

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

不会删除多余的答案。