如果我有以下知识库,如何在 parent_of 术语中添加一个剪辑,以便如果 X 已经确定为父亲,prolog 不会尝试“检查”X 是否也是母亲?
father_of(max,john).
father_of(max,james).
father_of(max,gabe).
mother_of(june,john).
mother_of(june,james).
parent_of(X,Y) :- father_of(X,Y).
parent_of(X,Y) :- mother_of(X,Y).
例如,我想要:
parent_of(max,Y) 为:Y=john, Y=james, Y=gabe
parent_of(june,Y) 为:Y=john, Y=james
对于第一个,我什至不希望 prolog 尝试检查 max 是否是母亲,因为已经确定他是父亲。
我已经尝试了很多组合,包括:
parent_of(X,Y) :- father_of(X,Y),!. <-- fixes an X and Y and thus will list only Y=john
parent_of(X,Y) :- !,father_of(X,Y). <-- works for parent_of(max,Y) but not parent_of(jane)
这甚至可能吗?