Frage

Was ist der beste Weg, um eine Prolog-Liste in einen Prolog Begriff der Umwandlung (dh keine Liste), in Bezug auf die Effizienz und so viel wie möglich?

bestehende Einbau-Prädikate mit

Die Schnittstelle und Anwendungsbeispiele wären die folgenden.

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

d. die gegebene Liste (die eigentlich eine verschachtelte Term) abgeflacht ist in ein Begriff, mit dem angegebenen Namen.

Ich sage nicht, dass es Sinn macht, dies zu tun. (Aber wenn Sie denken, dass es funktioniert, geben Sie bitte eine usecase in Ihrer Antwort.)

War es hilfreich?

Lösung

Sie müssen den =.. Operator verwenden, etwa so:

list_to_term(List, Functor, Term) :-
    Term =.. [Functor | List].
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top