我在 Prolog 中有一个与家谱相关的程序,我必须在其中找到与某个人相关的所有兄弟姐妹。
我将规则“姐妹”定义为:
sister(X,Y) :-
parent(Z,X),
parent(Z,Y),
woman(X)
让我们想象“杰克”有多个姐妹:劳拉、杰西卡和朱莉娅。当我问
?- sister('Laura','Jack')
Prolog 回答是的。但是当我问 ?- sister(X,'Jack')
时,它回答 false 而不是 X 的所有可能值。
知道出了什么问题或如何解决吗?
我通过定义“命令”来修复它:
consult_sisters(X,Y) :- findall(S,不同(姐妹(S,Y)),L), 成员(X,L).
它找到个体Y的所有姐妹,并为每个不同的姐妹将它们添加到列表L一次,然后Prolog将显示列表L的每个元素X。