Domanda

Qual è il modo migliore di convertire un elenco Prolog in un termine Prolog (che non è un elenco), in termini di efficienza e l'utilizzo dei predicati integrati esistenti il ??più possibile?

L'interfaccia e gli esempi di utilizzo sarebbero i seguenti.

%% 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).

vale a dire. l'elenco dato (che in realtà è un termine nidificato) viene appiattito in un termine con il nome dato.

Non sto dicendo che abbia senso farlo. (Ma se pensi che lo faccia, ti preghiamo di fornire un caso d'uso nella tua risposta.)

È stato utile?

Soluzione

Devi usare l'operatore = .. , in questo modo:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top