На этом шаге мы рассмотрим работу со списками.
В Прологе есть способ явно отделить голову от хвоста. Вместо разделения элементов запятыми, это можно сделать вертикальной чертой "|". Например:
[а,b,с] эквивалентно [а| [b,с]]и, продолжая процесс,
[а| [b,с]] эквивалентно [а | [b| [с]]], что эквивалентно [а| [b| [с| [] ]]]Можно использовать оба вида разделителей в одном и том же списке при условии, что вертикальная черта есть последний разделитель. При желании можно набрать [а,b,с,d] как [a,b| [c,d]]. В таблице 1 вы найдете другие примеры.
Список | Голова | Хвост |
---|---|---|
['a','b','с'] | 'a' | ['b','с'] |
['a'] | 'a' | [] % пустой список |
[ ] | Не определена | Не определен |
[[1,2,3], [2,3,4],[ ]] | [1,2,3] | [[2,3,4],[ ]] |
Список 1 | Список 2 | Присвоение переменным |
---|---|---|
[X,Y,Z] | [эгберт, ест,мороженое] | Х=эгберг, У=ест, Z=мороженое |
[7] | [X | Y] | Х=7,Y=[ ] |
[1,2,3,4] | [X, Y | Z] | X=1, Y = 2, Z = [3,4] |
[1,2] | [3|X] | fail % неудача |
На следующем шаге мы начнем рассматривать использование списков.