Pergunta

Qual é a melhor maneira de converter uma lista Prolog em um termo Prolog (que não é uma lista), em termos de eficiência, e usando existente built-in predicados, tanto quanto possível?

Os exemplos de interface e de uso seria o seguinte.

%% 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. a lista dado (que é, na verdade, um termo aninhada) é achatado em um termo com o nome dado.

Eu não estou dizendo que não faz sentido para fazer isso. (Mas se você acha que ele faz, por favor fornecer uma usecase em sua resposta.)

Foi útil?

Solução

Você precisa usar o operador =.., assim:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top