Frage

Ich habe das Prädikat m(L,L) Und ich möchte, dass es die Liste zurückgibt, die es braucht. Der Code lautet:

m([],[]).
m([H|T],[H|L]) :- m(T,L).

Wenn ich versuche, es mit diesem Beispiel zu verwenden:

m([1,2,3,4,5,6,7,8,9,10],L)

Ich verstehe das als Antwort:

L = [1, 2, 3, 4, 5, 6, 7, 8, 9|...].

(Mir ist aufgefallen, dass es in Ordnung ist, wenn ich es mit weniger Elementen versuche.) Warum passiert das und die Liste ist unvollendet?

Wie kann ich das vermeiden?

Tut mir leid, wenn es eine wirklich dumme Frage ist, aber ich habe das Web gesucht und konnte keine Dokumentation finden, die mir helfen kann, zu verstehen ... Danke!

War es hilfreich?

Lösung

Die Liste ist fertig - die Ausgabe wird gerade für Visualisierungszwecke abgeschnitten. Wenn Sie ein Prädikat schreiben, das Ihre Liste ausdruckt, werden Sie feststellen, dass es vollständig ist. Ich vermute, Sie verwenden SWI Prolog, was bedeutet, dass Sie sich auschecken können dieser Link für Möglichkeiten, die Anzeigeeinstellungen zu ändern.

Andere Tipps

Sowohl die Toplevel -Abfrage-/Antwortschleife als Debugger Abkürzung lange komplexe Begriffe. Sie tun dies, um endlose Ausgangsseiten zu vermeiden. In der Tat schreiben sie mithilfe write_term/3 die eine Optionsliste als Argument nimmt. Die Optionsliste für Antworten, die vom Prolog Toplevel gedruckt wurden, befindet sich im Prolog-Flag Toplevel_print_options und die für den Debugger in DEBUGGER_PRINT_OPTIONS. Anfangs haben beide den unten angegebenen Wert:

?- current_prolog_flag(toplevel_print_options, X).

X = [quoted(true), portray(true), max_depth(10), spacing(next_argument)].

So ändern Sie die Standardeinstellungen: Fügen Sie eine set_prolog_flag/2 -Anweisung in Ihre prolog persönliche Initialisierungsdatei hinzu (siehe Plinitialisierung) Um die Standardeinstellung zu ändern, die oben genannten Prolog -Flags.

Gehen Sie einfach zum settings -> user init file ... ->

Und ändern Sie max_depth (10) wie folgt:

 :- set_prolog_flag(toplevel_print_options,
             [quoted(true), portray(true), max_depth(100)]).

Es gibt auch andere Optionen, in denen Sie verwenden können Plinitialisierung Datei, die bereits kommentiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top