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

Объявление списков

Чтобы объявить тип для списка целых надо использовать domains - дек-

ларацию, такую как:

domains

integerlist = integer*

Обозначение "*" означает "список чего-либо"; таким образом, integer*

означает "список целых". ВАЖНОЕ ЗАМЕЧАНИЕ: у слова "список" нет специаль-

ного значения в Турбо Прологе. Вы могли бы с тем же успехом назвать спи-

сок ЗАНЗИБАРОМ. Именно обозначение "*", а не название, говорит компилято-

ру, что вы имеете ввиду список.

Элементы списка могут быть любыми, включая другие списки. Однако все

элементы списка должны принадлежать одному типу. И domains - декларация

для элементов должна быть следующего вида:

domains

elementlist = elements*

elements = ....

где elements имеют единый тип (например: integer, real или symbol)

или является набором отличных друг от друга элементов, отмеченных разными

функторами. В Турбо Прологе нельзя смешивать стандартные типы в списке.

Например: следующая декларация неправильно определяет список, составлен-

ный из целых, действительных и символьных элементов:

elementslist = elements*

elements = integer; real; symbol

/*неверная запись в Прологе*/

Чтобы объявить список, составленный из целых, действительных и сим-

вольных элементов, надо определить один тип, включающий все три типа с

функторами, которые покажут, к какому типу относится тот или иной эле-

мент. Например:

elementslist = elements*

elements = i(integer); r(real); s(symbol)

/*функторы здесь i,r и s*/

(Более подробно об этом смотрите ниже, в этой главе, в разделе

"Составные списки")