在对 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).
现在,如果我“询问”解释器: 兄弟(克拉拉,苏菲)。
答案是真的。
但是,如果我尝试获取例如 clara 的兄弟姐妹: 兄弟(clara,X)。
答案是错误的。就像 findall( X, 兄弟 (clara, X ), L )。
返回一个空列表。
为什么?