Convertendo uma lista em um termo em Prolog
-
03-07-2019 - |
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.)
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