Пролог - УТВЕРЖДАЕТ и ОТРЕКАЕТСЯ

Я задавался вопросом, я знаю, что можно использовать assert добавить факты или правила или безотносительно, если Вы объявили, что предикат -:dynamic, но это только позволяет изменения, которые внесены, чтобы быть сохраненными на той сессии только, например, если Вы закрываете окно Prolog затем, изменения базы данных потеряны.

Таким образом, я задавался вопросом, там любой способ сделать его так, чтобы assert и retract предикаты могут делать постоянные изменения в Пролог .pl файлом?

Спасибо

25
задан false 3 February 2014 в 00:30
поделиться

1 ответ

Я могу предложить вам очень простой способ сделать это.

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.
39
ответ дан 28 November 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: