Список - это упорядоченная последовательность элементов, которая может иметь произвольную длину. Порядок расположения элементов в последовательности является существенным. Элементами списка могут быть любые термы - константы, переменные, списки, структуры, которые включают, конечно, и другие списки. Списки позволяют представить практически любой тип структуры данных, который может потребоваться при обработке символьной информации. Списки широко используются для представления деревьев и синтаксического разбора, грамматик, карт городов, программ для ЭВМ и математических объектов, таких как графы, формулы и функции.
Одна из форм представления списков на Прологе - это скобочная форма записи списка. Она представляет собой заключенную в квадратные скобки последовательность элементов списка, разделенных запятыми. Например:
[B] - список, состоящий из одного элемента B;
[A,B,F] - список, состоящий из 3 элементов A,B,F;
['этот','человек',['любит','ловить','рыбу']]. Здесь третьим элементом списка является также список.
[a,V1,b,[X,Y]] -элементами списка могут быть и переменные.
Преимущество использования списков - в более естественном и компактном представлении информации. Например, записать факт, что студент Иванов во втором семестре изучает дисциплины: математику, физику, программирование, историю, иностранный язык, можно следующим образом:
'изучает'('Иванов',['математика','физика','программирование','история','ин_яз']).
Поведение переменных, входящих в списки, ничем не отличается от поведения переменных как аргументов предиката. Первоначально они имеют неконкретизированное значение, но в любой момент могут быть конкретизированы. Так, например, целевое утверждение
? - 'родители'(L,[]).
позволит при согласовании с базой знаний выявить все бездетные семьи, а на вопрос
? - 'родители'([X1,X2],[X1,X2]).
будут получены списки семей с двумя разнополыми детьми, в которых детей назвали именами родителей.
|