2014-03-29 110 views
0

我在学习Prolog,只想检查自己: 我觉得这个问题很基础,但我只是开始。prolog编写规则

father(X,Y) 
mother(X,Y) 
male(X) 
female(X) 
parent(X,Y) 
diff(X,Y) 

为is_mother(X)写一个子句是否正确?

is_mother(X):- female(X), parent(X,Y). 

谢谢

+0

是否曾经在一些数据和测试呢? – DrLivingston

+0

是的,这是正确的 –

回答

0
is_mother(X) :- female(X), parent(X,Y). 

这在技术上是正确的,因为它说,X是一个母亲,如果X是女性,X是有人(Y)的母公司。在这个定义中,由于您没有使用它的值,因此Prolog会给您一个关于Y是“单身”变量的警告。为了避免这种情况的警告,你可以使用_或与_开头的名称来表示一个变量,其价值,你不关心和前导不会警告你不使用:

is_mother(X) :- female(X), parent(X,_). 

条款female(X)parent(X,_)假定有要么谓词female(X)parent(X,Y)或你有事实,如(例如)female(sally).其中sally是一个“原子”(在Prolog中一个恒定),和/或parent(sally, tom).