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

Chain_insertafter/5

Этот предикат помещает терм после определенного терма, возвращая

указатель нового терма. Он имеет вид:

chain_insertafter(Dbase,Domain,Ref,Term,NewRef) /* (i,i,i,i,o) */

chain_insertafter вставляет терм Term после элемента цепочки опреде-

ленного указателем Ref, причем NewRef связывается с указателем, соответс-

твующим терму Term после его вставки.

chain_terms/5

В процессе поиска с возвратом предикат chain_terms поочередно связы-

вает Term и Ref с каждым термом и соответствующим ему указателем в данной

цепочке chain. Он имеет вид:

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

chain_delete/2

Предикат удаляет определенную цепочку из данной базы данных, преди-

кат имеет вид:

chain_delete(Dbase,Chain) /* (i,i) */

chain_first/3 и chain_last/3

Эти предикаты возвращают указатели первого и последнего элемента це-

почки:

chain_first(Dbase,Chain,FirstRef) /* (i,i,o) */

chain_last (Dbase,Chain,LastRef) /* (i,i,o) */

chain_next/3 и chain_prev/3

Предикат chain_next возвращает указатель терма, следующего за данным

в цепочке, а chain_prev возвращает указатель терма, предыдущего данному.

chain_next(Dbase,Ref,NextRef) /* (i,i,o) */

chain_prev(Dbase,Ref,PrevRef) /* (i,i,o) */

Обработка термов.

Есть три предиката работы с базами данных, обрабатывающих термы:

term_replace, term_delete, ref_term. При обращении к любому из выше при-

веденных предикатов необходимо объявить домен терма в качестве аргумента.

Вследствие этого, удобно объявить все термы в данной базе данных как аль-

тернативы одного домена, как в этом описании:

domains

terms_for_my_stock_control_database =

customer(Customer,Name,ZipCode,Address);

supplier(SupplierNo,Name,Address);

parts(PartNo,Description,Price,SipplierNo)

Обратите внимание, что здесь нет ограничений на смешивание доменов

во внешней базе данных. Одна цепочка может содержать текстовые строки,

другая - целые числа, а третья составные объекты, и так далее. Однако,

элементы внешней базы данных не запоминаются вместе с описанием домена,

например, целые не обязательно занимают именно два байта. Это ваше дело

выбирать из базы данных терм в тот домен, из которого он был записан в

базу данных. Если вы перепутали домены, обычно происходит ошибка при ис-

полнении.