BIRTHDAY

/ \

/ \

person date ®

/ \ / ! \

''Joe'' ''Jones'' ''Aug''20 1918

або ж

birthday(person(''Joe'',''Jones''),date(''Aug'',20,1918))

 

5.2.1.Уніфікація складних об`єктів.

Складний об`єкт може уніфікуватись або ж з простою змінною, наприклад,

data(''April'',2,1981) зрівнюється з X і зв'язує X з date(“April”,2,1981),

або ж з складним об'єктом, який співпадає з ним структурно:

так data(''April'',2,1981) зрівнюється з date(Mo,Da,Yr).

Використання знаку дорівнює для уніфікації складних об'єктів.

Пролог проводить уніфікацію в двох місцях. По перше, уніфікація проходить, коли є виклик співставлення голови фрази. Інший спосіб виконання уніфікації - це використання знаку (=). В цьому випадку Пролог буде ототожнювати об'єкти, які знаходяться з обох сторін знаку. Цей підхід є корисним для знаходження значень аргументів складного об'єкту. Наприклад, наступна програма виконує такі дії. Якщо дві особи мають одне й теж прізвище, тоді другій особі приписується адреса першої особи.

 

Domains

person = person(name,address)

name = name(first,last)

address = addr(street,city,state)

street = street(number,street_name)

city,state,street_name = string

first,last = string

number = integer

Goal

P1 = person(name(jim,mos),

addr(street(5,"1stst"),igo,"CA")),

P1 = person(name(_,mos),Address),

P2 = person(name(jane,mos),Address), write(P2).

 

Складні об'єкти можуть бути переглянуті і перетворені в прості об'єкти фраз вашої прологівської програми, що значно спрощує програмування. Наприклад , розглянемо факт:

 

owns(john,book('From Here to Eternity','James Jones')),

в якому ми стверджуємо, що Джон має книгу 'З теперішнього в майбутнє', яку написав Джеймс Джонс. Подібно ви можете написати: