Преобразование списка в термин в Prolog

StackOverflow https://stackoverflow.com/questions/612604

  •  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].
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top