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

War es hilfreich?

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
scroll top