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

Работа со списками

В Прологе есть способ отделить голову от хвоста. Вместо разделения

элементов запятыми, можно отделить голову от хвоста вертикальной чертой

(|). Например:

[a, b, c] эквивалентно [a|[b, c]]

и, продолжая процесс

[a|[b, c]] эквивалентно [a|[b|[c]]]

что эквивалентно [a|[b|[c[]]]]

Можно использовать оба вида разделителей в одном и том-же списке при

условии, что вертикальная черта есть последний разделитель. Так, что при

желании можно набрать [a, b, c, d] как [a, b |[c, d]]. В таблице 8.1 вы

найдете другие примеры.

Таблица 8.1: Головы и Хвосты Списков

-----------------------------------------------------------------

Список Голова Хвост

-----------------------------------------------------------------

['a', 'b', 'c'] 'a' ['b', 'c']

['a'] 'a' []/* пустой список*/

[] неопределено неопределено

[[1, 2, 3], [2, 3, 4], []] [1, 2, 3] [[2, 3, 4], []]

-----------------------------------------------------------------

В таблице 8.2 несколько примеров на присвоение в списках.

-----------------------------------------------------------------

Список 1 Список 2 Присвоение переменным

-----------------------------------------------------------------

[x, y, z] [эгберт, ест, мороженое] x=эгберт,y=ест,z=мороженое

[7] [x | y] x=7, y=[]

[1, 2, 3, 4] [x, y | z] x=1, y=2, z=[3,4]

[1, 2] [3 | x] отказ

-----------------------------------------------------------------