"> yes
Зауважте, що так само як і is, оператор > викликає виконання обчислень. p>
Припустимо, у нас є програма, в яку входять відносини нар, що зв'язує ім'я людини з роком його народження. Тоді імена людей, що народилися між 1950 і 1960 роками включно, можна отримати за допомогою такого питання:
? - нар (Ім'я, Рік),
Рік> = 1950,
Рік <= 1960.
Нижче перераховані оператори порівняння
X> Y X більше Y
X
X> = YX більше або равенY
X =
X =: = Y величини X і Yсовпадают (рівні)
X = = Y величини X іYне дорівнюють
Зверніть увагу на різницю між операторами порівняння = і = : = , наприклад в таких цілях як X = Y і X =: = Y. Перша мета викличе зіставлення об'єктів X і Y, і якщо X і Y порівнянні, можливо призведе до конкретизації будь-яких змінних в цих об'єктах. Ніяких обчислень при цьому проводитися не буде. З іншого боку X =: = Y викличе арифметичне обчислення і не може привести до конкретизації змінних. Це розходження можна проілюструвати такими прикладами
? - 1 +2 =: = 2 +1
yes
? - 1 +2 = 2 +1
no
? - 1 + A = B + 2
A = 2
B = 1.
Давайте розглянемо використання арифметичних операцій на двох простих прикладах. У першому прикладі шукається найбільший спільний дільник, у другому - визначається кількість елементів в деякому списку. p align="justify"> Якщо задані два цілих числа Х іY, то їх найбільший спільний дільник Д можна знайти, керуючись наступними трьома правилами:
1) Якщо Х іY дорівнюють то Д дорівнює Х.
2) Якщо Х> Y, то Д дорівнює найбільшою загальною делителю Y і різниці Х - Y.
) Якщо Y <Х, то формулювання аналогічна правилом 2), якщо Х іY поміняти в ньому місцями.
На прикладі легко переконатися, що ці правила дійсно дозволяють знайти найбільший спільний дільник. Вибравши, скажімо, Х = 20 і Y = 25 ми керуючись наведеними правилами, після серії вирахувань отримаємо Д = 5. p align="justify"> У нашому наступному прикладі потрібно провести деякий підрахунок, для чого, як правило, необхідні арифметичні дії. Прикладом такого завдання може служити обчислення довжини-якого списку; інакше кажучи, підрахунок його елементів. Визначимо процедуру
довжина (Список, N)
Яка буде підраховувати елементи списку Список і конкретизувати N отриманим числом. Як і раніше. Коли мова йшла про списки, корисно розглянути два випадки:
1) Якщо список порожній, то його довжина дорівнює 0.
2) Якщо списку не порожній, то Список = [Голова | Хвіст] і його довжина дорівнює 1 плюс довжина хвоста Хвіст.
Ці два випадки відповідають наступній програмі:
довжина ([], 0).
довжина ([_ | Хвіст], N): -
довжина (Хвіст, N1),
N is 1 + N1.
Застосувати процедуру довжина можна так:
? - довжина ([a, b, [c, d], e], N).
N = 4
Зауважимо, що в другому реченні цієї процедури дві мети його тіла не можна поміняти місцями. Причина полягає в тому, що змінна N1 повинна бути конкретизована до того, як почне обчислюватися мета
N is 1 + N1
Таким чином, ми бачимо, що введення вбудованої процедури is привело нас до прикладу відносини, чутливого до порядку обробки пропозицій і цілей. Очевидно, що процедурні міркування для подібних відносин відіграють життєво важливу роль. p align="justify"> Отже
В· Для виконання арифметичних дій використовуються вбудовані процедури.
В· Арифметичні операції необхідно явно запускати за допомогою вбудованої процедури is. Вбудовані процедури пов'язані також з зумовленими операторами +, -, *, /,// ​​і mod.
В· До моменту виконання операцій всі їх аргументи повинні бути конкретизовані числами.