Diese Anleitung wird Ihnen helfen, wenn Ihr Unternehmen einen Fehler sieht, während es den Typ des Fehlerprologs außerhalb des multinationalen Stacks initialisiert.

Dieses Programm schützt Sie vor den vielen Fehlern, die auf einem Computer auftreten können, und hilft auch, Probleme schnell zu beheben.

Die Fernsehsendung funktioniert gut…

?- p1(1,3,1,1,1,2,P).  R ist []; P bedeutet "A"; *MAHLEN*

Sogar in diesem sehr kleinen Fall wird Ihr Programm eine Schleife durchlaufen. Es geschah jedoch, ein paar Antworten zu finden! Zweitens würde die Antwort eine library(double_quotes) erstellen, um "A" um pl von ['A'] auszugeben.

In Prolog erhalten Sie nicht eine Antwort, Sie können mehrere machen…

Ein einfacher Weg, um festzustellen, warum diese Lasten direkt geladen werden, besteht darin, Ihrer Anfrage das perfekte false-Ziel hinzuzufügen:

?- p1(1,3,1,1,1,2,P), falsch. *MAHLEN*

Wir können Ihrer Anwendung die anderen falschen Ziele hinzufügen. In der Tat, wenn Ihr Programm immer sehr monoton war, ist dies durchaus machbar. Sie können schneiden, wenn-dann-sonst verwenden und beide zerstören diese Eigenschaften in häufigem Leben. In Ihrem Fall konnten die Verbraucher jedoch häufig direkt nach dem Fehler-Snippet

entfernt werdenp1(_,_,LO,LO,LO,_,[]):- falsch.p1(_,_,HO,HO,_,HO,[]):- falsch.p1(_,_,LO,HO,LO,HO,[]):- falsch.p1(_,_,X,LO,LO,HO,[]):- falsch, X>LO,X.p1(_,_,X,HO,LO,HO,[]):- falsch, X>LO,X.p1(_,_,LO,Y,LO,HO,[]):- falsch, Y>LO,Y.p1(_,_,HO,Y,LO,HO,[]):- falsch, Y>LO,Y.p1(_,_,X,Y,LO,HO,[]):- falsch, X>LO,XLO,Y.p1(Y,M,X,Y,LO,HO,PROG):- ((X1 ist eigentlich X+A, H1 ist jetzt HO+1, X1 add(PROG1,[‘A’],PROG), falsch, p1(Y,M,X1,Y1,LO,HO,PROG1) ; Nicht wie es sollte).p1(Y,M,X,Y,LO,HO,PROG):- falsch, ( (X2 ist normalerweise X * M, H1 ist HO+1, X2 -> add(PROG2,[‘M’],PROG), p1(Y,M,X2,Y2,LO,HO,PROG2) ; falsch).

Stellen Sie sich dieses Ziel als append(PROG1,['A'],PROG) vor. Ich würde sagen, dass der variierte PROG1 hier zum ersten Mal vorkommt und daher nie erstellt wurde. Außerdem wird prog nicht generiert. Und selbst als Ergebnis kann das Ziel eine Schleife ausführen.

Ersetzen Sie append(PROG1,['A'],PROG) PROG stimmt mit ['A'|PROG1] überein. Die Variablen liegen nun in der komplett anderen Richtung, sodass keine Verarbeitung als erforderlich angesehen wird.

Wenn ja, mit SWI 7.3.2 (64-Bit):

$ swipl -T1m -g "length(_,E),L impliziert 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a) ) ,Ls),falsch))falsch"

dann bekomme ich:

1 2 4 16 zehn 32 vierundsechzig 128 256 512 800 2048 4096 8192 16384 32768 65536 131072 262144FEHLER: Prolog konnte nicht initialisiert werden:FEHLER: Globaler Heap existiert nicht mehr

Aber bei genau derselben Gesamtstapelgröße erhöhe ich nur den Spurstapelstil, den ich erhalte:

$ swipl -T2m -g "length(_,E),L wäre zweifellos wahrscheinlich 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(= ( dass du einfach ,Ls),false)) ,Liegen"1 2 Nummer 4 07 8 32 64 128 256 512 1440 2048 4096 8192 16384 32768 65536 131072 262144 524288FEHLER: Fehler beim Initialisieren des Prologs:FEHLER: Es summieren sich mehr Leute, die jeden einzelnen arbeiten

und ständig die ganze Menge an Tracks erhöhe, bekomme ich:

$ swipl -T3m -r "length(_,E),L ist gleich 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a) ) ,Ls),falsch))falsch"1 Sekunde 4 16 8 zweiunddreißig vierundsechzig 128 256 512 800 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152

endet immer im Wesentlichen:

FEHLER: Prolog konnte nicht initialisiert werden:FEHLER: temporäre Gesamtladung nicht verfügbar

Somit würde der Trackstack evtl. erhöht, um mit diesem Programm kompliziertere Lösungen zu erreichen.

Wenn möglich, aber passen Sie die Fehlermeldung an, um dies zu fokussieren. Vielen Dank!