Списки
Использование списков
Список – специальный вид сложного терма, состоящий из
последовательности термов, заключенных в [ ] и разделенных запятыми.
domains
list = integer* % целочисленный список
Если элементы списка имеют смешанный тип, то должно быть
соответствующее описание:
domains
element = c (char); i (integer)
>list = element*
[c(‘a’), i(6),
i(-8), c(‘X’)]
Списки являются основной структурой программы на ТП. Для
удобства обработки введены два понятия: голова (head), хвост (tail).
Основные примеры обработки списков:
Список
|
Голова
|
Хвост
|
[‘a’, ‘b’, ‘c’]
|
‘a’
|
[‘b’, ‘c’]
|
[1]
|
1
|
[ ]
|
[ ]
|
не определена
|
не определена
|
[[1, 2, 3], [2, 3,
4], [ ]]
|
[1, 2, 3]
|
[[2, 3, 4], [ ]]
|
Для отделения головы спсика от хвоста используется символ
"|” [X|Y].
Примеры работы со списком
Сцепление двух спиcков.
concat ([ ], L, L).
concat ([H|T], L2,
[H|T3]):- concat (T, L2, T3).
Добавление элемента Х
к началу списка L
add (X, L, [X|L]
в конец
add_end (X, L, L1)
add_end (X, [ ],
[X]).
add_end (X, [H|T],
[H|T1]):- add_end (X, T, T1).
обращение списка
domains
l =real*
predicates
revers (l, l)
reversl (l, l, l)
clauses
revers (L, Lr):- reversl (L, [ ], Lr).
reversl ([ ], Lr, Lr)./span>
reversl ([H|T], L, Lr):-
reversl (T, [H|L], Lr).
|
Календарь | « Май 2024 » | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|