23
我想知道,我知道你可以使用assert
添加事實或規則或任何如果你聲明謂詞爲-:dynamic
,但這隻允許所做的更改保留在那僅會話,例如如果關閉Prolog窗口,則數據庫更改將丟失。Prolog - ASSERT和RETRACT
所以我想知道,是否有任何方法使得assert
和retract
謂詞可以對Prolog .pl文件進行永久更改?
謝謝
我想知道,我知道你可以使用assert
添加事實或規則或任何如果你聲明謂詞爲-:dynamic
,但這隻允許所做的更改保留在那僅會話,例如如果關閉Prolog窗口,則數據庫更改將丟失。Prolog - ASSERT和RETRACT
所以我想知道,是否有任何方法使得assert
和retract
謂詞可以對Prolog .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.
感謝,似乎工作,我只是想知道是否有可能將swi指向特定目錄而不是默認目錄?當然當使用tell命令時, – KP65 2010-03-13 16:47:11