11

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を見つけまし たが、そうではありませんでした違いの明確化も、\= の短い意味もないので、私を助けてください。

ありがとう。

4

1 に答える 1

18

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

于 2012-07-14T17:18:21.563 に答える