Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Owns(john,horse(blacky))




ми можемо системі задати запит goal:owns(john,X).

Змінна X після цього може бути зв'язана з різними типами об'єктів: книгою, конем, або ж можливо іншим об'єктом, який ви визначили. Це випливає із нашого визначення предикату owns. Тому нам не бажане старе використання предикату:

Owns (symbol,symbol).

Замість нього ми мусимо сформулювати нове визначення предикату, наприклад:

Owns(name,articles)

Зараз, ми можемо описати об'єкт articles в секції domains наступним чином:

 

Domains

articles=book(title,author);

Horse(name)

title,author,name=symbol

 

Крапка з комою читається тут як "або". В цьому випадку можливі альтернативи: книга може ідентифікуватись назвою і автором; або ж кінь ідентифікується своєю кличкою. Всі об'єкти title, аuthor, name є стандартними, символьного типу.

До опису об'єктів може бути добавлено і більше альтернатив. Наприклад, articles може бути судновою книгою, або ж банківською книгою. У випадку суднової книги можемо використати функтор без аргументів, банківську книгу можемо описати як bankbook(balance). В цьому випадку об'єкт articles може бути описаний:

 

articles =book(title,author); horse(name); boat; bankbook(balance)

title,author,name = symbol

balance =real

Далі приведемо повну програму, яка демонструє використання в фактах, що описуються предикатом owns, складного об'єкту типу articles:

Domain

articles = book(title, author);

Horse(name);

Boat;

Bankbook(balance)

title, author, name = symbol

balance = real

 

Predicates

Owns(name,articles)

Clauses

owns(john, book("A friend of the family", "Irwin Shaw")).

Owns(john, horse(blacky)).

Owns(john, boat).

Owns(john, bankbook(1000)).

Тепер відкомпілюємо нашу програму. Коли ми задамо системі запит:

goal: owns(john,Thihg).

Вона видасть чотири рішення:

 

Thing = book('A friend of the family','Irwin Shaw')

Thing = horse(blacky)

Thing = boat

Thing = bankbook(1000')

Solutions

Таким чином, опис домену складного об'єкту в загальному має такий вигляд:

 

domain object= alter1(D,D,...);

Alter2(D,D,...);

...

 

де alter1 і alter2 довільні, але різні функтори. Позначення (D,D,...) задає список імен доменів, які або ж описані десь в іншому допустимому місці, або ж мають один із стандартних типів. Відмітимо наступне:

1. Альтернативи розділяються крапкою з комою.

2. Кожна альтернатива має функтор і можливо список доменів для відповідних аргументів.

 

5.5.Багаторівневі складні об'єкти.

Пролог дозволяє нам конструювати складні об'єкти на декількох рівнях. Наприклад, в предикаті

book('The Ugly Duckling'.'Andersen')

замість використання прізвища автора, ми хочемо використати нову структуру, яка більш детально описує автора, включаючи до попередньої інформації ще й ім'я. Для виклику функтору результуючого нового складного об'єкту, ми повинні змінити базовий опис книги:

book('The Ugly Duckling',author('Hans Christian','Andersen'))

В старому описі об'єкту:





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 392 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Вы никогда не пересечете океан, если не наберетесь мужества потерять берег из виду. © Христофор Колумб
==> читать все изречения...

2282 - | 2104 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.