【发布时间】:2014-09-03 01:43:22
【问题描述】:
对 Prolog(在这种情况下为 SWI-Prolog)来说是全新的,因此对这个非常基本的问题表示歉意。我在下面有一个简单的程序。
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).
jealous(X, Y):- loves(X,Z), loves(Y,Z).
我对以下查询的结果有点困惑:
?- jealous(vincent, X).
X = vincent ;
X = marsellus.
也许我只是不习惯Prolog的统一过程,但答案不应该只是marsellus吗?为什么将 vincent 作为有效结果包含在此处?
另外,作为后续问题:我是否正确,为了得到所有“嫉妒”的人的结果,我会写一个查询,例如嫉妒(X,Y)。 ?
如果是这样,有人可以解释上述查询的以下结果吗?
?- jealous(X, Y).
X = Y, Y = vincent ;
X = vincent,
Y = marsellus ;
X = marsellus,
Y = vincent ;
X = Y, Y = marsellus ;
X = Y, Y = pumpkin ;
X = Y, Y = honey_bunny.
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: prolog