Представление списка диаграммой

Список в Прологе может определяться через функтор "." (точка).

.(a,[ ])  это форма записи списка.


Список [a,b,c]  может быть представлен структурой

.(а,.(b,.(c,[ ])))

или в виде дерева, или диаграммой "виноградная лоза"

 

 

     

 

Для вложенных списков [a,b,[c,d]]

- на верхнем уровне три элемента - на втором уровне два элемента.

Главной операцией при работе со списками является расщепление списка на голову и хвост.

В Прологе имеется специальная форма представления списка, называемая cons -формой записи:

[Head|Tail] или [H|T] или [a|[ ]] = [а]

При конкретизации формы списка   H сопоставляется с головой списка, а Т - с хвостом.

Например,

  р([a,b,c]).

 

?-p([X|Y]). yes X=a Y=[b,c]
     
     

Таким образом, выделяются одновременно голова списка и хвост.

Шаблон (образец) списка - это форма описания множества (семейства) списков, обладающих определенными свойствами.

Например:

Шаблон списка [X|Y] описывает любой список, состоящий не менее чем из одного элемента.

Шаблон [X,Y|Z] - список, состоящий не менее чем из двух элементов.

Шаблон [b|Z] - список, первым элементом которого является b.

Шаблон [Y,X,Z] - список из трех элементов.

Шаблоны списка используются при описании процедур работы со списками.

Определим отношение replace_first, которое заменяет первый элемент списка новым.

?-replace_first([a,b,с],w,X). X=[w,b,c]   - результат
 

?-replace_first([_|T],A,[a,b,c]).

A = a - результат

Т=[b,c] - результат.

 
         

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: