logo
TurboProlog / Документация / TOM_2

Соглашение об обозначениях

В Турбо Прологе один предикат может иметь разные варианты типа,

!!арности, шаблонов обмена. Для каждого типа вызывается отдельная проце-

дура. Для таких процедур в Турбо Прологе есть соглашение об обозначениях:

имя предиката используется как корень, а суффикс _X добавляется для ука-

зания номера варианта, где X - целое число (начиная с 0).

Рассмотрим следующую программу:

global predicates

add(2, 3, X), write ("2 + 3 =", X), nl

add(2, Y, 5), write ("5 - 2 =", Y), nl

add(Z, 3, 5), write ("5 - 3 =", Z), nl

add(2, 3, 5), write ("2 + 3 =5").

Загрузочный модуль этой программы должен содержать следующие функции

Си:

add_0 для первого шаблона (i, i, o)

add_1 для шаблона (i, o, i)

add_2 для (o, i, i)

add_3 для (i, i, i)

В качестве примера: следующий модуль на Си устанавливает все шаблоны

для предиката add

/*В этом файле содержаться функции для шаблонов add*/

add_0(int x, int y, int *z) /*шаблон (i, i, o)*/

{ *z = x + y; }

add_1(int x, int *y, int z) /*шаблон (i, o, i)*/

{ *y = z - x; }

add_2(int *x, int y, int z) /*шаблон (o, i, i)*/

{ *x = z - y; }

add_3(int x, int y, int z) /*шаблон (i, i, i)*/

{if ( (x + y) != z ) fail(); }