Aggiunta di fatti in un file esistente prologo
-
05-10-2019 - |
Domanda
Ho problemi di inserire i fatti in un file Prolog esistente, senza sovrascrivere il contenuto originale.
Supponiamo che io abbia un file test.pl:
:- dynamic born/2.
born(john,london).
born(tim,manchester).
Se carico questo prologo, e affermo più fatti:
| ?- assert(born(laura,kent)).
yes
Sono consapevole che posso salvare questo facendo:
|?- tell('test.pl'),listing(born/2),told.
Il che funziona, ma test.pl ora contiene solo i fatti, non la ": - dinamica nati / 2":
born(john,london).
born(tim,manchester).
born(laura,kent).
Questo è problematico perché se ricarico questo file, non sarò in grado di inserire più fatti in test.pl perché ": -. Dinamica nascita / 2" non esiste più.
Ho letto da qualche parte che, avrei potuto fare:
append('test.pl'),listing(born/2),told.
che dovrei aggiungere alla fine del file, tuttavia, ho il seguente errore:
! Existence error in user:append/1
! procedure user:append/1 does not exist
! goal: user:append('test.pl')
A proposito, sto usando SICStus prologo. Questo fa la differenza?
Grazie!
Soluzione
Non è sorprendente che contiene solo i fatti come questo è tutto quello che hai detto che per salvare. Il modo più semplice per aggirare questo è di usare
|?- tell('test.pl'), write(':- dynamic born/2.'), nl, listing(born/2), told.
o scrivere una piccola procedura che fa questo. A seconda di come si intende utilizzare questo si può considerare l'utilizzo save_program/1/2
e restore/1
.
Non posso aiutarti con append/1
ho paura.