Составители:
Рубрика:
103
Программа "Голова-хвост" (листинг 5.2) демонстрирует использова-
ния метода разделения списка. Два списка описаны в ней: список целых чи-
сел (имя домена - number_list) и список символических имен (домен
animal_list). Правило print_list применяется для доступа к элементам обоих
списков.
_____________________________________________________________
Листинг 5.2
/* Программа: Голова-хвост Файл: PROG0502.PRO */
/* Назначение: Работа со списками путем */
/* деления на
голову и хвост. */
domains
number_list = integer *
animal_list = symbol *
predicates
print_list(number_list) print_list(animal_list)
clauses
print_list([]).
print_list([Head|Tail]) :-
write(Head),nl,
print_list(Tail).
/***** конец программы *****/
_____________________________________________________________
Программа "Голова-хвост" использует правило
print_list([]).
print_list([Head|Tail]) :-
write(Head),nl,
print_list(Tail).
для доступа к элементам списков. Так как предикат print_list определен для
объектов обоих доменов, то это правило используется для работы как со
списком number_list, так и списком animal_list.
Когда правило пытается
удовлетворить цель
print_list([4,9,5,3])
то первый вариант правила, print_list[], дает неуспех, так как его объект яв-
ляется пустым списком. Напротив, введенный список соответствует объек-
ту второго варианта предиката, print_list([Head|Tail]). Переменной Head,
следовательно, присваивается значение первого элемента в списке, 4, в то
время как переменной Tail cтавится в соответствие оставшаяся часть списка,
[9,5,3].
Теперь, когда выделен первый элемент списка, с ним можно обра-
щаться так же, как и с любым простым объектом:
write(Head),nl,
Программа "Голова-хвост" (листинг 5.2) демонстрирует использова- ния метода разделения списка. Два списка описаны в ней: список целых чи- сел (имя домена - number_list) и список символических имен (домен animal_list). Правило print_list применяется для доступа к элементам обоих списков. _____________________________________________________________ Листинг 5.2 /* Программа: Голова-хвост Файл: PROG0502.PRO */ /* Назначение: Работа со списками путем */ /* деления на голову и хвост. */ domains number_list = integer * animal_list = symbol * predicates print_list(number_list) print_list(animal_list) clauses print_list([]). print_list([Head|Tail]) :- write(Head),nl, print_list(Tail). /***** конец программы *****/ _____________________________________________________________ Программа "Голова-хвост" использует правило print_list([]). print_list([Head|Tail]) :- write(Head),nl, print_list(Tail). для доступа к элементам списков. Так как предикат print_list определен для объектов обоих доменов, то это правило используется для работы как со списком number_list, так и списком animal_list. Когда правило пытается удовлетворить цель print_list([4,9,5,3]) то первый вариант правила, print_list[], дает неуспех, так как его объект яв- ляется пустым списком. Напротив, введенный список соответствует объек- ту второго варианта предиката, print_list([Head|Tail]). Переменной Head, следовательно, присваивается значение первого элемента в списке, 4, в то время как переменной Tail cтавится в соответствие оставшаяся часть списка, [9,5,3]. Теперь, когда выделен первый элемент списка, с ним можно обра- щаться так же, как и с любым простым объектом: write(Head),nl, 103
Страницы
- « первая
- ‹ предыдущая
- …
- 101
- 102
- 103
- 104
- 105
- …
- следующая ›
- последняя »