- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
В целях упрощения организации фактов и правил Пролог поддерживает составные доменные структуры. Кирпичиками для их создания служат базисные типы доменов Пролога. Можно создать составные объекты и доменные структуры на основе этих базисных типов.
В предикате likes(mary,apples), likes является предикатом (термом предиката), а mary и apples - объектами предиката. Пролог требует указания типов объектов для каждого предиката программы в разделе predicates. Некоторые из этих объектов могут быть, к примеру, числовыми данными, другие же - символьными строками.
Если используются стандартные базисные типы доменов в Прологе (Prolog), то нет необходимости отдельно описывать домены объектов этих утверждений. Тогда объекты предикатов определяются при описании этих правил в разделе программы predicates.
predicates book(symbol, symbol, integer) clauses book(“Tom Sawyer”,”Mark Twain”,1855).
Иногда необходимо несколько больше конкретизировать тип используемого предикатом объекта. Например, в примере ниже в предикате likes объекты имеют смысл «тот, кто любит» и «вещь, которую любят».
predicates likes(symbol,symbol) clauses likes(mary, apples). likes(beth, X) if likes(mary, X).
Пролог (Prolog) позволяет конструировать свои собственные типы объектов из базисных типов доменов.
Предположим, что объектам предиката likes вы хотите присвоить соответственно имена person и thing. Тогда в разделе программы domains должны появиться такие описания:
domains person, thing = symbol /* типы полей БД */ predicates likes(person, thing) /* названия полей БД */
Имена person и thing при этом будут обозначать некие совокупности (домены) значений.
Любое значение доменов person и thing может в утверждениях занимать место объектов person и thing из соответствующего предиката. Рассмотрим, например, такие три утверждения:
/* Конкретные значения в БД */ likes(john, camera). likes(tom, computer). likes(kathy, computer).
Person (домен) | Thing (домен) |
john | camera |
tom | computer |
kathy | computer |
Термы john, tom и kathy принадлежат здесь к домену person, а термы camera и computer - к домену thing. Все три утверждения относятся к одному и тому же предикату - likes. Отличие состоит лишь в значениях, которые принимают объекты. Другими словами, все три утверждения являются вариациями одного и того же предиката.
Если в Прологе (Prolog) необходимо явно описать все домены объектов, используемые предикатами, то в разделах domains и predicates в этом случае должны появиться следующие предложения:
domains title,author = symbol year = integer predicates book(title, author, year) clauses book(“Tom Sawyer”,”Mark Twain”,1855).
В этом случае, факты становятся элементами базы данных, поля которой имеют имена (title,author,year).
Пролог имеет 6 встроенных типов доменов:
Тип каждого из доменов должен быть объявлен в разделе программы domains.
Таблица. Стандартные типы доменов Турбо-Пролога
Тип | Ключевое слово | Диапазон значений | Примеры использования данных в Прологе |
Символы | сhar | Все возможные символы | 'a','b','#','B','\13', '%' |
Целые числа | integer | от -32768 до 32763 | 32767 |
Действительные числа | real | от +1Е-307 до 1Е+308 | 1.25Е23, 5.15Е-9 |
Строки | string | Последовательность символов (не более 250) | «today», «123», «just_a_reminder» |
Символические имена | symbol | 1. Последовательность букв, цифр и подчерков; первый символ - строчная буква. 2. Последовательность любых символов, заключенная в кавычки. | pay_check, school_day, flower, «Stars and Stripes» |
Файлы | file | Допустимое в DOS имя файла | command.com, autoexec.bat |
Следующий предикат иллюстрирует использование доменов различных типов:
payroll(employee_name, pay_rate, weekly_hours)
Этот предикат требует такого описания доменов:
employee_name = symbol
pay_rate = integer
weekly_hours = real
Описание домена employee_name показывает, что объекты этого домена являются символическими именами. Аналогично, объекты домена pay_rate - это целые числа, а домена weekly_hours - действительные.
Пример корректных утверждений, использующих предикат payroll:
payroll(«John Walker», 16, 45.25).
payroll(«Arthur Berman», 28, 32.50).
payroll(«Sandy Taylor», 23, 40.00).
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта
Обсуждение