Я задавался вопросом, я знаю, что можно использовать assert
добавить факты или правила или безотносительно, если Вы объявили, что предикат -:dynamic
, но это только позволяет изменения, которые внесены, чтобы быть сохраненными на той сессии только, например, если Вы закрываете окно Prolog затем, изменения базы данных потеряны.
Таким образом, я задавался вопросом, там любой способ сделать его так, чтобы assert
и retract
предикаты могут делать постоянные изменения в Пролог .pl файлом?
Спасибо
Я могу предложить вам очень простой способ сделать это.
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.
Затем закройте сеанс, снова откройте.
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.