Pregunta

¿Cuál es la mejor manera de convertir una lista Prolog en un término Prolog (que no es una lista), en términos de ¿Eficiencia y uso de los predicados integrados existentes tanto como sea posible?

La interfaz y los ejemplos de uso serían los siguientes.

%% list_to_term(+List:list, +Functor:atom, -Term:term)
%
% Usage:
%
% ?- list_to_term([], myfunctor, Term).
% Term = myfunctor.
%
% ?- list_to_term([a, b, [c], D, 2], myfunctor, Term).
% Term = myfunctor(a, b, [c], D, 2).

I.e. la lista dada (que en realidad es un término anidado) se aplana en un término con el nombre dado.

No estoy diciendo que tenga sentido hacer esto. (Pero si cree que sí, indique su caso en la respuesta).

¿Fue útil?

Solución

Debes usar el operador = .. , así:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top