吧务
level 14
端点市
楼主
最近在看《七周七语言》,被Prolog的奇妙特性深深吸引。书中有这样一段代码:
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
也就是说有相同兴趣的人会是同好、朋友,但为了避免生成的结果出现两者均为同一人,因此前面加入否定条件。
我使用的是SWI-Prolog,版本号为7.6.4。可是先前按照书中的代码编译后,结果为“false.”,后来我将否定条件放到后面,输出了需要的结果。这是为什么?

2018年06月08日 13点06分
1
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
也就是说有相同兴趣的人会是同好、朋友,但为了避免生成的结果出现两者均为同一人,因此前面加入否定条件。
我使用的是SWI-Prolog,版本号为7.6.4。可是先前按照书中的代码编译后,结果为“false.”,后来我将否定条件放到后面,输出了需要的结果。这是为什么?
