如何从 swi-prolog 查询中只获得一个输出?
How do you get only one output from a swi-prolog query?
如何从 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) ), _).
这也将删除重复项(冗余 answers/solutions)。或者使用 library(lambda)
:
?- X+\ ( mother(X, Y), female(Y) ).
不会删除多余的答案。
如何从 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) ), _).
这也将删除重复项(冗余 answers/solutions)。或者使用 library(lambda)
:
?- X+\ ( mother(X, Y), female(Y) ).
不会删除多余的答案。