Prolog中A \ = B与否(A == B)之间有什么区别?
我发现了http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse5 和这个维基页面 http://en.wikibooks.org/wiki/Prolog/Built-in_predicates 但它没有帮助我,因为没有澄清差异,也没有简短的意义为\ =。
感谢。
答案 0 :(得分:17)
A \= B
相当于not (A = B)
首先让我们先比较=/2
和==/2
;来自swi-prolog手册:
?Term1 =?Term2
将Term1与Term2统一。如果统一成功,则为真@ Term1 == @ Term2
如果Term1等同于Term2,则为True。
请注意,=/2
会尝试统一这些字词,如果成功,则==/2
只会执行检查时为真:
?- X = 1.
X = 1.
(implicit true.)
而
?- X == 1.
false.
还有:
?- X = Y.
X = Y.
?- X == Y.
false.
现在,not/1
会反转结果,如果=/2
或==/2
为假,则为真。
==/2
没有什么复杂的;如果这些条款现在相同则会返回false,否则为真
对于=/2
,你应该记住所有的统一都是暂时的:
?- \+ (\+ X = 1), print(X).
_G399
true.
(_G399
表示X
未实例化)