У меня возникли проблемы с вложением фактов в существующий файл 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 содержит теперь лишь факты, а не ": - динамика рожденного/2":
born(john,london).
born(tim,manchester).
born(laura,kent).
Это проблематично, потому что если я перезагрузите этот файл, я не смогу вставить больше фактов в test.pl, потому что «: - dynamic born/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')
Btw, я м с использованием пролога Sicstus. Это имеет значение?
Спасибо!
Я думаю, что вы должны подписаться на соответствующие ответы [утверждать факт в файл в прологе] (http://stackoverflow.com/questions/2885718/assert-fact-into-file-in-prolog). Или даже [Prolog - ASSERT и RETRACT] (http://stackoverflow.com/questions/2435237/prolog-assert-and-retract) – ony
Используйте 'open/3' и' close/1' вместо устаревшего 'tell' , 'tell',' append' – false