Преобразование списка в термин в Prolog
-
03-07-2019 - |
Вопрос
Каков наилучший способ преобразования списка Prolog в термин Prolog (который не является списком) с точки зрения эффективности и максимально возможного использования существующих встроенных предикатов?
Интерфейс и примеры использования будут следующими.
%% 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).
То есть.приведенный список (который на самом деле является вложенным термином) сглаживается в термин с заданным именем.
Я не говорю, что в этом есть смысл.(Но если вы думаете, что это так, пожалуйста, укажите usecase в своем ответе.)
Решение
Вам нужно использовать =..
оператор, вот так:
list_to_term(List, Functor, Term) :-
Term =.. [Functor | List].
Не связан с StackOverflow