Pas égaux et ne pas unifier en Prolog
Quelle est la différence entre Un \= B et non(A==B) dans le Prologue?
J'ai trouvé ce http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=iaa-htmlse5
et cette page du wiki
http://en.wikibooks.org/wiki/Prolog/Built-in_predicates
mais il n'a pas m'aider car il n'y a pas de clarification de la différence, ni courte sens pour \=.
Grâce.
OriginalL'auteur Vitali Pom | 2012-07-14
Vous devez vous connecter pour publier un commentaire.
A \= B
est équivalent ànot (A = B)
Donc permet de comparer
=/2
et==/2
premier; à partir de la swi-prolog manuel:Avis que
=/2
tente d'unifier les conditions et si elle réussit, c'est vrai, tout==/2
juste effectue une vérification:tout
et aussi:
maintenant,
not/1
pour inverser le résultat et être vrai si=/2
ou==/2
était faux.pour
==/2
il n'y a rien de compliqué; si les termes étaient équivalents maintenant, il retournera false sinon vrai.pour
=/2
vous devriez vous rappeler que tous les unifications sera temporaire:(
_G399
indique queX
est non-instancié)désolé si je n'étais pas clair; la différence entre
not(A==B)
et(A\=B)
est la même qu'entreA==B
etA=B
:not A==B
sera vrai si les conditions ne sont pas les mêmes, même si elles peuvent être unifiée tout en\=
retournera falseMerci :). Maintenant, tout est laissé pour moi d'apprendre quelles sont les unifier.
vous pouvez afficher l'unification comme une généralisation de l'affectation:
X=1
X est unifié avec 1 et maintenant, c'est 1.[X,Y] = [1,2]
X est 1, Y 2.[X,2] = [4,Y]
X 4, Y est de 2.1+X = Y+(Z+3)
Y est 1, X est Z+3.OriginalL'auteur Thanos Tintinidis