Преобразование списка в термин в Прологе - PullRequest
4 голосов
/ 05 марта 2009

Каков наилучший способ преобразования списка Пролога в термин Пролог (это не список), с точки зрения эффективность, и максимально использовать существующие встроенные предикаты?

Интерфейс и примеры использования будут следующими.

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

т.е. данный список (который на самом деле является вложенным термином) сведен в термин с указанным именем.

Я не говорю, что имеет смысл делать это. (Но если вы считаете, что это так, укажите в своем ответе случай использования.)

1 Ответ

8 голосов
/ 05 марта 2009

Вам необходимо использовать оператор =.., например:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...