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