如何从 SWI-Prolog 查询中只获得一个输出?我曾尝试使用 cut ( !) 但它似乎不起作用。
例如:我已经用陈述填充了我的知识库,我想找到任何一个既是女性又是某人母亲的名字。
我已经尝试过:
mother(X,Y), female(X).
...但这给了我所有的X-__和Y-__
我也试过:
mother(X,Y), female(X), !.
...但这仍然给了我X-__和Y__
我只想找到X. 有没有人有任何提示让我以某种方式只得到一个?
如何从 SWI-Prolog 查询中只获得一个输出?我曾尝试使用 cut ( !) 但它似乎不起作用。
例如:我已经用陈述填充了我的知识库,我想找到任何一个既是女性又是某人母亲的名字。
我已经尝试过:
mother(X,Y), female(X).
...但这给了我所有的X-__和Y-__
我也试过:
mother(X,Y), female(X), !.
...但这仍然给了我X-__和Y__
我只想找到X. 有没有人有任何提示让我以某种方式只得到一个?
?- setof(t, Y^ ( mother(X, Y), female(Y) ), _).
这也将删除重复项(冗余答案/解决方案)。或使用library(lambda):
?- X+\ ( mother(X, Y), female(Y) ).
这不会删除多余的答案。