Je veux définir un opérateur "++>" d'une manière telle que taper "a ++> b" fera une liste de [a, b].Comment définir un opérateur dans prolog pour faire une liste?
J'ai écrit le code suivant, mais il ne semble pas faire le travail.
++>(X,Y) :-
[X,Y].
:- op(500,xfy,++>).
Il y a vraiment deux problèmes ici, l'opérateur définissant « ++> » comme une notation infixe, et faire en sorte que l'expression "a ++> b" soit "évaluée" comme le terme [a, b]. La première partie de ceci est assez standard Prolog comme vous semblez savoir de la mention de ** op/3 **. Obtenir la machinerie en place pour «évaluer» les termes impliquant le nouvel opérateur est plus délicat. Pour les fonctions arithmétiques, SWI-Prolog a une directive qui permet à ** is/2 ** de fonctionner avec des fonctions définies par l'utilisateur, mais la vôtre n'est pas une fonction arithmétique. Je pourrais vous montrer comment définir un nouveau prédicat ** iz/2 ** qui «évaluerait» les termes +++. – hardmath
J'ai eu l'occasion d'aller chercher la directive 'arithmetic_function/1' de SWI-Prolog, et je remarque qu'elle a été [obsolète, peut-être abandonnée] (http://www.swi-prolog.org/pldoc/man?predicate= fonction arithmétique/1). – hardmath