Question

Quel est le meilleur moyen de convertir une liste Prolog en un terme Prolog (qui n'est pas une liste), en termes de efficacité, et utiliser autant que possible les prédicats intégrés existants?

Les exemples d'interface et d'utilisation sont les suivants.

%% 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 liste donnée (qui est en fait un terme imbriqué) est aplatie en un terme portant le même nom.

Je ne dis pas qu'il est logique de faire cela. (Mais si vous pensez que c'est le cas, fournissez une casse dans votre réponse.)

Était-ce utile?

La solution

Vous devez utiliser l'opérateur = .. , comme suit:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top