Prolog 定义规则时使用分号
我是Prolog新手,正在阅读一行简单的Prolog代码:Prolog 定义规则时使用分号,prolog,Prolog,我是Prolog新手,正在阅读一行简单的Prolog代码: sibling(X, Y) :- brother(X, Y); sister(X, Y). 我知道是不是: sibling(X, Y) :- brother(X, Y), sister(X, Y). 那就意味着兄弟(X,Y)和姐妹(X,Y)必须是真的,兄弟(X,Y)才是真的。这使我相信“;”代表or运算符,因此会: sibling(X, Y) :- brother(X, Y); sister(X, Y). 如果兄弟(X,Y)或姐妹
sibling(X, Y) :- brother(X, Y); sister(X, Y).
我知道是不是:
sibling(X, Y) :- brother(X, Y), sister(X, Y).
那就意味着兄弟(X,Y)和姐妹(X,Y)必须是真的,兄弟(X,Y)才是真的。这使我相信“;”代表or运算符,因此会:
sibling(X, Y) :- brother(X, Y); sister(X, Y).
如果兄弟(X,Y)或姐妹(X,Y)是真的,则评估为真?正如潜伏者所说,
/2
是Prolog目标析取控制结构。顺便说一句,序言编码指南针对以下条款提出建议:
sibling(X, Y) :- brother(X, Y); sister(X, Y).
建议的备选方案是:
sibling(X, Y) :- brother(X, Y).
sibling(X, Y) :- sister(X, Y).
但是,如果在子句的主体中使用了析取,请始终将其写在括号之间。在这种情况下:
sibling(X, Y) :-
( brother(X, Y)
; sister(X, Y)
).
,是和(连词); 是或(即析取)是,
代码>基本上是指或。谢谢。固定的。