5

効率の観点から、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).

つまり、指定されたリスト(実際にはネストされた用語)は、指定された名前の用語にフラット化されます。

私はこれを行うことが理にかなっていると言っているのではありません。(ただし、そうだと思われる場合は、回答にユースケースを記載してください。)

4

1 に答える 1

8

=..次のように、演算子を使用する必要があります。

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
于 2009-03-04T21:55:05.613 に答える