Quiero definir un operador "++>" de forma que escribir "a ++> b" haga una lista de [a, b].¿Cómo se define un operador en prolog para hacer una lista?
He escrito el siguiente código, pero parece que no hace el trabajo.
++>(X,Y) :-
[X,Y].
:- op(500,xfy,++>).
En realidad, hay dos cuestiones aquí, la definición de operador "++>" como una notación infija, y organizando que la expresión "a ++> b" sería "evaluada" como el término [a, b]. La primera parte de esto es Prolog bastante estándar, como parece saber por la mención de ** op/3 **. Obtener la maquinaria para "evaluar" los términos que involucran al nuevo operador es más complicado. Para funciones aritméticas, SWI-Prolog tiene una directiva que le permite a ** is/2 ** trabajar con funciones definidas por el usuario, pero la suya no es una función aritmética. Podría mostrarle cómo definir un nuevo predicado ** iz/2 ** que podría "evaluar" ++> términos. – hardmath
Tuve la ocasión de ir a buscar la directiva 'arithmetic_function/1' de SWI-Prolog, y noté que ha sido [obsoleta, quizás eliminada] (http://www.swi-prolog.org/pldoc/man?predicate= arithmetic_function/1). – hardmath