元の内容を上書きせずに、既存の Prolog ファイルにファクトを挿入するのに問題があります。
ファイル 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 には ":- dynamic Born/2" ではなく事実のみが含まれるようになりました。
born(john,london).
born(tim,manchester).
born(laura,kent).
このファイルをリロードすると、":- dynamic Born/2." のため、test.pl にファクトを挿入できなくなるため、これは問題です。もう存在しません。
私はどこかでそれを読んだ、私はできる:
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')
ところで、私は Sicstus プロローグを使用しています。これは違いがありますか?
ありがとう!