Составители:
Рубрика:
131
а запрос
?- [личность(Х)|Т]=[личность(джон), а, b].
значения
Х=джон Т=[а, Ь].
14.7.2 Стандартные функции обработки списков
Покажем на примерах, как можно использовать запись вида
[Н|T]
вместе с рекурсией для определения некоторых полезных целевых
утверждений для работы со списками.
Принадлежность списку. Сформулируем задачу проверки
принадлежности данного терма списку.
Граничное условие:
терм
R
содержится в списке
[H|T]
, если
R=H
.
Рекурсивное условие:
терм
R
содержится в списке
[H|T]
, если
R
содержится в списке
Т
.
Вариант записи граничного условия на Прологе имеет вид:
содержится (R, L) :-
L=[H|T],
H=R.
Вариант записи рекурсивного условия на Прологе имеет вид:
содержится(R, L) :-
L=[H|T],
содержится(R, T).
Цель
L=[H|T]
в теле обоих утверждений служит для того, чтобы
разделить список
L
на голову и хвост.
Можно улучшить программу, если учесть тот факт, что Пролог сначала
сопоставляет с целью голову утверждения, а затем пытается согласовать его
тело. Новая процедура, которую мы назовем «принадлежит», определяется
таким образом:
принадлежит (R, [R|Т]).
принадлежит (R, [H|Т]) :- принадлежит (R, T).
На запрос
?- принадлежит(а, [а, Ь, с]).
будет получен ответ
да
.
а запрос
?- [личность(Х)|Т]=[личность(джон), а, b].
значения
Х=джон Т=[а, Ь].
14.7.2 Стандартные функции обработки списков
Покажем на примерах, как можно использовать запись вида [Н|T]
вместе с рекурсией для определения некоторых полезных целевых
утверждений для работы со списками.
Принадлежность списку. Сформулируем задачу проверки
принадлежности данного терма списку.
Граничное условие:
терм R содержится в списке [H|T], если R=H.
Рекурсивное условие:
терм R содержится в списке [H|T], если R содержится в списке Т.
Вариант записи граничного условия на Прологе имеет вид:
содержится (R, L) :-
L=[H|T],
H=R.
Вариант записи рекурсивного условия на Прологе имеет вид:
содержится(R, L) :-
L=[H|T],
содержится(R, T).
Цель L=[H|T] в теле обоих утверждений служит для того, чтобы
разделить список L на голову и хвост.
Можно улучшить программу, если учесть тот факт, что Пролог сначала
сопоставляет с целью голову утверждения, а затем пытается согласовать его
тело. Новая процедура, которую мы назовем «принадлежит», определяется
таким образом:
принадлежит (R, [R|Т]).
принадлежит (R, [H|Т]) :- принадлежит (R, T).
На запрос
?- принадлежит(а, [а, Ь, с]).
будет получен ответ да.
131
Страницы
- « первая
- ‹ предыдущая
- …
- 130
- 131
- 132
- 133
- 134
- …
- следующая ›
- последняя »
