What is the best way of converting a Prolog list into a Prolog term (that is not a list), in terms of efficiency, and using existing built-in predicates as much as possible?
The interface and usage examples would be the following.
%% 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. the given list (which is actually a nested term) is flattened into a term with the given name.
I'm not saying that it makes sense to do this. (But if you think that it does, please provide a usecase in your answer.)
You need to use the =..
operator, like so:
list_to_term(List, Functor, Term) :-
Term =.. [Functor | List].
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With