asserta(факт)
(dbasedom): (i)
Добавляет новый факт перед остальными фактами того жe предиката
в оперативную базу данных. Факт должен быть термом, который
относится к области определения dbasedom.
assertz(факт)
(dbasedom): (i)
Добавляет новый факт после остальных фактов того же предиката.
Геtгасt(факт)
(dbasedom): (i)
Убирает из оперативной базы данных первый факт, который
сопоставляется с указанным фактом.
save(имя_файла)
(string) :(i)
Пишет в файл с указанным именем все дизъюнкты из оперативной
базы данных.
consult(имя_файла)
(string): (i)
Добавляет в оперативную базу данных все дизъюнкты из указанного
именем файла, который был создан, например, .с помощью предиката
save.
Например, работать с адресником (создание, чтение, запись,добавление):
database person(string,string)
predicates adresa adresal(char)
clauses
adresa: -
not(person(_,)), /* имеются адреса? */
write("укажите имя файла адресов и/или <ВК>: "),
readln(X),
Х<>"",consult(X),faiI.
adresa: - •
nl,write("ввод или вывод адреса (о/ы): "), ••
readchar( X),wrlte(X),
adresa1(X),
nl,wrlte("eщe (д/н): "),
readchar(Y),wite( Y),
Y='д',!,adresa.
adresa: -
person(_,_), /* есть что-то записать? */
nl,write("HMH файла для хранения адресов и/или <ВК>: "),
readln(F),F<>"",save(F).
adresa.
adresal('о'):-
nl.
wrlte("укажите фамилию: ") ,readln(F),
wrlte("укажите адрес: "),readln(A),
not(person(F,A)), /* запись, если еще нет в БД */
asserta(person(F,A)),!.
adresa1('ы'): -
nl,wrlte("укажите фамилию: "),readln(F),
person(F,A),!,
nl,write(F," живет под адресом: ",А).
adresa1(' ы ):-!,
nl,wrlte(", нет адреса!"),nl.
adresa1(_). /* если ошибка, то ничего не делается */
goal
makewindow(1,121,0,"",10,0,15,80),adresa.