Я использую swi-пролог в моей программе python. Он принимает входной запрос от пользователя и создает для него утверждения. Я сохранил эту роль как рабочий-редуктор (например, серверный сокет), который продолжает прослушивать входной запрос.Промывка утверждений (фактов) после каждого исполнения
первый запрос - программа генерирует число х утверждает
2-й запрос - программа генерирует Y числа утверждает, теперь программа считает (х + у) утверждает, при обработке запроса.
и так далее.
Это какой-либо способ смывать утверждения после каждого выполнения запроса? Вот фрагмент кода process.pro:
Здесь ссылка принимает заявки и вопрос для ввода запроса.
question(REND, RULE):-
linkage(LINK, LEND, REND_NEW),
(
(
rule_first_question(LINK, REND_NEW) ->
nb_getval(rule, RULE_NEW),
nb_getval(rend, REND)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_third_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_four_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
).
Последняя точка с запятой кажется недействительным синтаксисом для меня – CapelliC
@CapelliC: да, забыл удалить при копировании фрагмента кода. – nlper
Использование 'nb_getval/2' и' nb_linkval' для ваших целей не имеет смысла. Эти конструкции редко используются, вы не узнаете ничего о Prolog, начав с них. – false