【发布时间】:2013-08-24 21:06:44
【问题描述】:
在对 PROLOG 编程语言禁欲多年后,我正试图再次涉足它。 很快,有些事情让我感到困惑。
(我在 windows 上使用 SWI prolog 6.4.1.)
考虑以下定义:
father(jack, clara).
father(jack, sophie).
mother(angela,clara).
mother(angela,sophie).
parent(A, B) :- father(A, B).
parent(A, B) :- mother(A, B).
sibling( A, B ) :-
A \= B,
parent(P, A),
parent(P, B).
现在,如果我“询问”口译员: 兄弟姐妹(克拉拉,苏菲)。
是的就是答案。
但是,如果我尝试获取例如的兄弟姐妹克拉拉: 兄弟(克拉拉,X)。
答案只是错误。 就像 findall(X, 兄弟(clara, X), L)。
返回一个空列表。
为什么?
【问题讨论】:
-
\=读作“不能统一”,not读作“不是”。这样就不会误读任何使用它的语句。
标签: prolog logic prolog-dif