logo search
TurboProlog / Документация / TOM_1

Chain_inserta/5 и chain_insertz/5

Предикаты chain_inserta и chain_insertz соответствует asserta и

assertz. Вид их таков:

chain_inserta(Dbase,Chain,Domain,Term,Ref) /* (i,i,i,i,o) */

chain_insertz(Dbase,Chain,Domain,Term,Ref) /* (i,i,i,i,o) */

При этом chain_inserta включает Term в начало цепочки Chain, а

chain_insertz помещает Term в конец цепочки. Dbase - это db_selector базы

данных, Domain-домен переменной Term, а Ref - указатель, соответствующий

Term. Например, если объявлено, что my _dba имеет вид db_selector домена:

domains

db_selector = my_dba;...

то в следующем обращении:

chain_inserta(

my_dba,customer,person,p(john, "1 The Avenue", 32),NewRef)

customer (покупатель) является именем цепочки, и все покупатели хранятся

в одной цепочке. Очень хорошо хранить список поставщиков в качестве тер-

мов домена person, но в другой цепочке, возможно названную supplier.

person - это имя домена, который содержит факт p(john,"1 The Avenue",32),

как показано в объявлении:

domains

person=p(name, address, age)

Если цепочка chain еще не создана, то она автоматически создается.