Prolog中A\= B与否(A == B)之间有什么区别?
我发现这个http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse5 和这个wiki页面 http://en.wikibooks.org/wiki/Prolog/Built-in_predicates 但它没有帮助我,因为没有澄清差异,也没有简短的意义\ =.
谢谢.
Tha*_*dis 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.)
Run Code Online (Sandbox Code Playgroud)
而
?- X == 1.
false.
Run Code Online (Sandbox Code Playgroud)
并且:
?- X = Y.
X = Y.
?- X == Y.
false.
Run Code Online (Sandbox Code Playgroud)
现在,not/1将反转结果,如果=/2或是==/2假,则为真.
因为==/2没有什么复杂的; 如果条款现在相同则会返回false,否则为真.
因为=/2你应该记住所有的统一都是暂时的:
?- \+ (\+ X = 1), print(X).
_G399
true.
Run Code Online (Sandbox Code Playgroud)
(_G399表示X未实例化)