TuProlog: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
Нет описания правки |
||
Строка 251:
=== Настройка tuProlog ===
Разработчики
Теории — в tuProlog теория является текстом, т.е. последовательностью клаузов и/или директив.
Клаузы и директивы ограниченны точками и разделяются пробелом. Теории могут быть загружены и выгружены в с помощью библиотечных предикатов.
Директивы — записываются с помощью:
2. Формата и синтаксиса read—terms (термин Prolog с последующим завершающим символом, состоящий из текста и точки).
Признаки — tuProlog позволяет динамично определять признаки, которые описывают некоторые аспекты библиотек и их предикатов, и значимые функторы.
Признак различается по имени (буквенно-цифровому атому), списку возможных значений, изначальному значению, и булевскому значению, которое показывает возможность изменения признака. Можно изменить значение признака (если есть такая возможность) включив в список значений новое.
Библиотеки — tuProlog может быть расширен за счет загрузки или выгрузки библиотек.
Каждая библиотека предоставляет свой особый набор предикатов, функторов и теорий, которые делают доступными новые признаки и операторы.
Библиотеки могут быть предустановленными или измененными пользователем.
Библиотека может быть загружена посредством predicate load library, или method loadLibrary.
На данный момент, tuProlog не поддерживает управление исключениями: в действительности, исключение делает предикат и/или функтор, в котором оно присутствует, ошибочным, что может привести к ошибке работы самой программы.
=== Встроенные предикаты ===
Данный раздел содержит список встроенных предикатов, которые содержатся в tuProlog.
В описании встроенных аргументов (built—in argument) операция выполняется согласно следующему правилу, символ “+” перед обозначает исходный аргумент, “-” обозначает итоговый аргумент, “?” обозначает исходный или итоговый аргумент, “@” обозначает исходный аргумент, который должен быть несвободным (связанным).
==== Управление настройками ====
• true/0
true — истина.
• fail/0
fail — ложь.
• ’,’/2
’,’(Первый аргумент, Второй аргумент) истинно только в том случае, если и первый и второй аргументы истинны.
• !/0
! — истинно.
Удаляются все пункты выбора между сокращенной (cut) и исходной (parent) задачей цели.
Результатом операции будет, использование текущего оператора и подстановок, используемых в сокращенной задаче.
• ’$call’/1
’$call’(Goal) истинно тогда, когда задача (Goal) истинна.
Это действие нельзя сократить.
Операция выполняется согласно следующему правилу: call(+callable term(вызываемый термин))
• halt/0
halt завершает выполнение программы Prolog и возвращается к системе, которая вызвала процессор (processor).
• halt/1
halt(X) завершает выполнение программы Prolog и возвращается к системе, которая вызвала процессор, минуя значение X.
Операция выполняется согласно следующему правилу: halt(+int)
Строка 291 ⟶ 318 :
• is/2
is(X, Y) истинно, если X можно объединить со значением выражения Y.
Операция выполняется согласно следующему правилу: is(?term, @evaluable)
• ’=’/2
’=’(X, Y) истинно, если X и Y объединяемы.
Операция выполняется согласно следующему правилу: ’=’(?term, ?term)
• ’\=’/2
’\=’(X, Y) истинно, если X и Y нельзя объединить.
Операция выполняется согласно следующему правилу: ’\=’(?term, ?term)
• ’$tolist’/2
’$tolist’(Составное слово, Список) истинно, если Составное слово – составное термин, и Список – списковое представление составного слова.
Операция выполняется согласно следующему правилу: ’$tolist’(@struct, —list)
• ’$fromlist’/2
’$fromlist’(Составное слово, Список) истинно, если Составное слово, объединяемо со списковым представлением списка.
Операция выполняется согласно следующему правилу: ’$fromlist’(—struct, @list)
• copy term/2
copy term(Термин1, Термин2) истинно, если Термин2 объединяем с переименованной копией Термина1.
Операция выполняется согласно следующему правилу: copy term(?term, ?term)
• ’$append’/2
’$append’(Элемент, Список) истинно, если Список это список (List is a list).
Операция выполняется согласно следующему правилу: ’$append’(+term, @list)
Строка 315 ⟶ 362 :
• ’$find’/2
’$find’(Клауз, Список клаузов (ClauseList)) истинно, если Список клаузов является списком, а Клауз — клаузом, при этом все клаузы базы данных соответствующие Клаузу прикреплены к списку.
Операция выполняется согласно следующему правилу: ’$find’(@clause, @list)
• abolish/1
abolish(PI) полностью удаляет динамичный предикат, соответствующий Индикатору предиката (predicate indicator PI).
Операция выполняется согласно следующему правилу: abolish(@term)
• asserta/1
asserta(Клауз) истинно, при этом Клауз добавляется в начало базы данных.
Операция выполняется согласно следующему правилу: asserta(@clause)
• assertz/1
assertz(Клауз) истинно, при этом Клауз добавляется в конец базы данных.
Операция выполняется согласно следующему правилу: assertz(@clause)
• ’$retract’/1
’$retract’(Клауз) истинно, если база данных содержит, по крайней мере, один клауз объединенный с Клаузом.
При этом клауз удаляется из базы данных. Повторное выполнение операции не возможно.
Операция выполняется согласно следующему правилу: ’$retract’(@clause)
==== Управление операциями и признаками ====
• op/3
op(Приоритет, Спецификатор, Оператор) истинно.
Всегда выполняется, изменяя таблицу операторов.
Если приоритет равен 0, тогда оператор удаляется из таблицы операторов.
Иначе, Оператор добавляется к таблице операторов, с приоритетом — Приоритет и ассоциативностью определяемой Спецификатором.
Если оператор, с одинаковым символом Оператора и Спецификатора уже существует в таблице операторов, предикат модифицирует его приоритет в соответствии с аргументом Приоритета.
Операция выполняется согласно следующему правилу: op(+integer, +specifier, @atom or atom list)
• flag list/1
flag list(Список признаков) истинно, если Список признаков содержит признаки определяемые в ядре TuProlog.
Операция выполняется согласно следующему правилу: flag list(—list)
• set prolog flag/2
set prolog flag(Признак, Значение) истинно, и ассоциируется со значением признака, где значение находится в пределах допустимых значений (implementation defined range of values for Flag).
Операция выполняется согласно следующему правилу: set prolog flag(+flag, @nonvar)
• get prolog flag/2
get prolog flag(Признак, Значение) истинно, если Признак поддерживается TuProlog и Значение ассоциируется с ним.
get prolog flag/2 не обратимо.
Операция выполняется согласно следующему правилу: get prolog flag(+flag, ?term)
==== Управление операциями и признаками ====
|