我無法將事實插入到現有的序言文件中,而無需覆蓋原始內容。將事實添加到現有的序言文件
假設我有一個文件test.pl:
:- dynamic born/2.
born(john,london).
born(tim,manchester).
如果我在序言中加載此,我斷言更多的事實:
| ?- assert(born(laura,kent)).
yes
我知道我可以做保存此:
|?- tell('test.pl'),listing(born/2),told.
哪些工作,但現在test.pl只包含了事實,而不是 「: - 動態出生/ 2」:
born(john,london).
born(tim,manchester).
born(laura,kent).
這是有問題的,因爲如果我重新加載該文件,我就不能再事實插入test.pl因爲「: - 動態出生/ 2。」不存在了。
我讀的地方,我可以這樣做:
append('test.pl'),listing(born/2),told.
這應該只是追加到文件的末尾,但是,我得到以下錯誤:
! Existence error in user:append/1
! procedure user:append/1 does not exist
! goal: user:append('test.pl')
順便說一句,我m使用Sicstus prolog。這是否有所作爲?
謝謝!
我認爲你應該訂閱問題的答案[斷言事實到文件中的序言](http://stackoverflow.com/questions/2885718/assert-fact-int-file-in-prolog)。甚至[Prolog - ASSERT和RETRACT](http://stackoverflow.com/questions/2435237/prolog-assert-and-retract) – ony 2010-05-27 19:11:25
使用'open/3'和'close/1'而不是過時的'tell' ,'tell','append' – false 2014-06-15 08:50:30