Prolog - ASSERT und EINFAHR
-
19-09-2019 - |
Frage
Ich habe mich gefragt, ich bin mir bewusst, Sie assert
verwenden können, Fakten oder Regeln oder was auch immer hinzufügen, wenn Sie das Prädikat erklärt haben -:dynamic
zu sein, aber dies ermöglicht nur die Änderungen, die nur in dieser Sitzung gehalten werden gemacht werden, z.B. wenn Sie die Prolog-Fenster dann die Datenbankänderungen schließen verloren.
Also ich frage mich, ist es eine Möglichkeit, es so zu machen, dass die assert
und retract
Prädikate permanente Änderungen an der Datei .pl Prolog machen?
Danke
Lösung
Ich kann Ihnen vorschlagen, eine sehr einfache Art und Weise, dies zu tun.
1 ?- assert(a(1)).
true.
2 ?- assert(a(2)).
true.
3 ?- assert(a(3)).
true.
4 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.
5 ?- tell('a_db.txt'), listing(a), told.
true.
Dann schließt Sitzung erneut öffnen.
1 ?- a(A).
ERROR: toplevel: Undefined procedure: a/1 (DWIM could not correct goal)
2 ?- ['a_db.txt'].
% a_db.txt compiled 0.00 sec, 516 bytes
true.
3 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.
4 ?- listing(a).
:- dynamic a/1.
a(1).
a(2).
a(3).
true.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow