1

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

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

我已经尝试过:

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

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

我也试过:

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

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

我只想找到X. 有没有人有任何提示让我以某种方式只得到一个?

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 回答