我想在Prolog中创建一个规则,在我的数据库中定义了daughter_of和son_of,如下所示。但是我在新规则中遇到单例错误,Y,M和F.我认为只有在其他地方没有使用变量时才会出现这种情况?这也是写新规则的正确方法吗?
非常感谢任何指导。
谢谢,
male(albert).
male(edward).
female(alice).
female(victoria).
parents(edward, victoria, albert).
parents(alice, victoria, albert).
sister_of(X,Y):-
female(X),
parents(X,M,F),
parents(Y,M,F).
brother_of(X,Y):-
male(X),
parents(X,M,F),
parents(Y,M,F).
daughter_of(X,Y):-
female(X),
parents(X,M,F).
son_of(X,_Y):-
male(X),
parents(X,M,F).
答案 0 :(得分:1)
在你找到parents(X,M,F)
的父母后,你忘了检查母亲或父亲是否为Y.
以下是更正后的代码:
daughter_of(X,Y):-
female(X),
parents(X,M,F),
(Y = M ; Y = F).
son_of(X,Y):-
male(X),
parents(X,M,F),
(Y = M ; Y = F).
试运行:
?- son_of(X, Y).
X = edward,
Y = victoria ;
X = edward,
Y = albert.
?- daughter_of(X, Y).
X = alice,
Y = victoria ;
X = alice,
Y = albert ;
false.