Prolog の A \= B と not(A==B) の違いは何ですか?
このhttp://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse5 とこの wiki ページ http://en.wikibooks.org/wiki/Prolog/Built-in_predicatesを見つけまし たが、そうではありませんでした違いの明確化も、\= の短い意味もないので、私を助けてください。
ありがとう。
Prolog の A \= B と not(A==B) の違いは何ですか?
このhttp://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse5 とこの wiki ページ http://en.wikibooks.org/wiki/Prolog/Built-in_predicatesを見つけまし たが、そうではありませんでした違いの明確化も、\= の短い意味もないので、私を助けてください。
ありがとう。
A \= B
と同等ですnot (A = B)
それでは、まず比較=/2
して==/2
みましょう。swi-prolog マニュアルから:
?Term1 = ?Term2
Term1 と Term2 を統合します。統合が成功した場合は true@Term1 == @Term2
Term1 が Term2 と等しい場合に真。
=/2
条件を統一しようとすることに注意してください。それが成功した場合は true です==/2
が、チェックを実行するだけです。
?- X = 1.
X = 1.
(implicit true.)
その間
?- X == 1.
false.
また:
?- X = Y.
X = Y.
?- X == Y.
false.
orが falseの場合、not/1
結果を反転して true になります。複雑なことは何もないからです
。条件が等しい場合は false を返し、それ以外の場合は true を返します。
すべての統合は一時的なものであることを覚えておく必要があります。=/2
==/2
==/2
=/2
?- \+ (\+ X = 1), print(X).
_G399
true.
(はインスタンス化さ_G399
れていないことを示します)X