我对此有疑问:Finding the oldest person in Prolog
数据:
age(john, 10).
age(mary, 15).
age(rose, 75).
age(jack, 49).
age(carl, 17).
age(lucy, 66).
因此,此查询将返回最老的人:
oldest(P) :- age(P, X), \+ ( age(_, Y), Y > X ).
我是Prolog的新手,我很难理解这个查询,尤其是\+
部分。
我的理解:为了得到年龄最大的人,我们将所有年龄为X岁的人,没有年龄超过X岁的人。但这将使最年轻的人回归。我很困惑:D
你能帮忙阅读这个查询吗?
答案 0 :(得分:1)
它的内容如下:
P 是一个人(年龄 X ),因此没有其他人的年龄高于 P 的年龄。
答案 1 :(得分:0)
这是另一种阅读谓词
的方法% For all person P, P is the oldest person if
oldest(P) :-
% exist X such that the age of P is X, and
age(P, X),
% do not exist Y such that Y is the age of some person and Y > X.
\+ (age(_, Y) , Y > X).