我将如何陈述有关事实的“一般”情况?假设我需要声明“每个人都喜欢喜欢他/她的人”,并且我有一个可能会或可能不喜欢彼此的人的列表。
到目前为止,这是我尝试过的,但肯定不是这样做的:
likes(dana, cody).
hates(bess, dana).
hates(cody, abby).
likes(first(Girl, OtherGirl), first(OtherGirl, Girl)).
hates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
因为这甚至不会编译。
everybody([dana, cody, bess, abby]).
likes_reflexive(dana, cody).
hates(bess, dana).
hates(cody, abby).
likes_reflexive(X, Y):- likes(X, Y), likes(Y, X).
hates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
%% likes_reflikes_reflexive(X, Y):- likes(X, Y), likes(Y, X).
%% user:6: warning: discontiguous predicate likes_reflexive/2 - clause ignored
%% hates(Girhates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
%% user:8: warning: discontiguous predicate hates/2 - clause ignored
不幸的是,我不明白警告说什么。希望它能让我的意图更清楚。即通过陈述一个事实,我也想陈述另一个相关的事实。