Appending facts into an existing prolog file.

Posted by vuj on Stack Overflow See other posts from Stack Overflow or by vuj
Published on 2010-05-27T14:19:56Z Indexed on 2010/05/27 14:21 UTC
Read the original article Hit count: 282

Filed under:
|
|

Hi,

I'm having trouble inserting facts into an existing prolog file, without overwriting the original contents.

Suppose I have a file test.pl:

:- dynamic born/2. 

born(john,london).
born(tim,manchester).

If I load this in prolog, and I assert more facts:

| ?- assert(born(laura,kent)).
yes

I'm aware I can save this by doing:

|?- tell('test.pl'),listing(born/2),told.

Which works but test.pl now only contains the facts, not the ":- dynamic born/2":

born(john,london).
born(tim,manchester).
born(laura,kent).

This is problematic because if I reload this file, I won't be able to insert anymore facts into test.pl because ":- dynamic born/2." doesn't exist anymore.

I read somewhere that, I could do:

append('test.pl'),listing(born/2),told.

which should just append to the end of the file, however, I get the following error:

! Existence error in user:append/1
! procedure user:append/1 does not exist
! goal:  user:append('test.pl')

Btw, I'm using Sicstus prolog. Does this make a difference?

Thanks!

© Stack Overflow or respective owner

Related posts about dynamic

Related posts about prolog