<<
>>

Нотация и структуры данных

Prolog применяет нотацию почти идентичную той, которая рассматривалась для формул Хорна, за исключением одного обозначения: стрелка импликации ^ за

660

Глава 21.
Логическое программирование

менена двоеточием, за которым следует черточка (или знак «минус») (:-). Таким образом, программа прародителя из предыдущего раздела была бы написана в синтаксисе языка Prolog следующим образом: прародитель (X, Y) :- родитель (X, Z), прародитель (Z, Y). прародитель (X, X). родитель (liza, tom).

а пример о числах был бы написан в следующем виде: natural(0).

natural(successor(X)) :- natural(X).

Обратите внимание, что названия переменных X и Y набраны в верхнем регистре. Prolog отличает переменные от констант и имен предикатов и функций за счет использования верхнего регистра для переменных и нижнего регистра для констант и имен.

В некоторых системах Prolog при записи переменной вводят символ подчеркивания перед именем: прародитель (_x, _x)

Кроме того, вместо соединителя and используют запятую, а вместо or — точку с запятой. Правда, точка с запятой редко применяется в программировании, так как она не является стандартной частью логики формулы Хорна.

Базовой структурой данных являются термы, например родитель (X, Z) или successor(successor(0)). Кроме того, в качестве базовой структуры данных часто применяют список. Список в языке Prolog заключается в квадратные скобки. Если список включает элементы x, у, и z, то это записывается как [x, y, z]. Списки могут содержать термы или переменные.

С помощью вертикальной черты можно определить голову и хвост списка. Например, [H|T] означает, что H — первый элемент в списке, а T является хвостом списка. Это тип нотации может использоваться для извлечения компонентов списка через сопоставление с образцом. Таким образом, если [H|T] = [1,2,3], то H = 1 и T = [2,3]. Перед чертой можно написать сколько угодно термов. Например, [X, Y|Z] = [1,2,3] дает X = 1, Y = 2, а Z = [3]. Пустой список обозначается как [] и у него нет первого элемента.

В языке Prolog есть несколько стандартных встроенных предикатов, например not, =, а также операции ввода-вывода: read, write и nl (для newline). Одна операция в языке Prolog обозначается необычно: меньше чем или равно записывается как = < вместо

<< | >>

Еще по теме Нотация и структуры данных:

  1. Прерывание нотаций:
  2. Григорьев Ю.А., Ревунков Г.И.. Банки данных, 2002
  3. Оценка данных о личности.
  4. 18.4. Права субъекта персональных данных
  5. Банк данных
  6. 5.3. Графическое представление данных
  7. Анализ и интерпретация полученных данных
  8. Анализ и интерпретация полученных данных
  9. Подготовка исходных данных
  10. 4.5. Право изготовителя базы данных
  11. 12.4. Анализ эмпирических данных
  12. 3.3.4. Методы обработки и анализа данных
  13. 5.1. Табличное представление данных
  14. 18.7. Уполномоченный по правам субъектов персональных данных
  15. 3.3.2. Обоснование методов сбора эмпирических данных
  16. Глава 9 Создание экспертной базы данных
  17. 2. Регистрация программ, баз данных и охраняемых топологий
  18. 4.1. Общие принципы анализа данных
  19. Практическое использование виктимологических данных.