9
votes

Quel est l'opérateur -> Opérateur de Prolog et comment puis-je l'utiliser?

J'ai lu à ce sujet dans un livre mais cela n'a pas été expliqué du tout. Je ne l'ai pas non plus vu dans un programme. Fait partie de la syntaxe de prolog? C'est pour quoi? L'utilisez-vous?


2 commentaires

Je lis cela pourrait être utilisé pour écrire des analyseurs. Somme -> o1 + o2 ou quelque chose ...


C'est -> (Notez les deux caractères), voir le manuel SWI: SWI-PROLOGR.ORG/PLDOC/...


3 Réponses :


8
votes

Il représente implication em>. Le côté droit n'est exécuté que si le côté gauche est vrai. Ainsi, si vous avez ce code,

?- implication(a).
Argument a received.
true.

?- implication(b).
Argument b received.
true.

?- implication(c).
Received unknown argument.
true.


2 commentaires

Attendez, si c'est implicitement, alors logique faux -> faux devrait donner vrai , quand il ne le fait pas. Qu'est-ce qui est avec ça?


@ Błażejmicalik n'est pas une implication logique, mais un impératif si, alors, d'autre, avec une coupe implicite à l'intérieur.



3
votes

C'est une version locale de la coupe, voir par exemple le Section sur le contrôle prédique dans le manuel SWI.

Il est principalement utilisé pour mettre en œuvre si, alors, d'autre par (condition -> vraie branche; fausse branche). Une fois que la condition réussit, il n'ya pas de backtracking de la branche vraie dans la maladie ou dans la fausse branche, mais la récupération de l'if-the-ele est toujours possible: xxx

Par conséquent, il est appelé une coupe locale.


1 commentaires

La coupe douce est disponible en SWI via "* ->", pas "->"!



1
votes

2 commentaires

Hmm. Je ne suis pas tant dans Prolog, mais cela semble violer le principe sec. Je ne sais pas si ça vaut le coup! Je veux dire, surtout si les conditions préalables deviennent légèrement plus complexes, cela peut devenir désordonné. Quant à la mise en arrière: pour cette version (SWI-) PROG ne retourne pas immédiatement à l'invite sur implicitement (a) et implication (B) , donc en effet de la ramification tenté.


Oui, je ne dis certainement pas que c'est une alternative supérieure, c'est une alternative. :)