【发布时间】:2015-03-25 10:36:03
【问题描述】:
我在我的 python 程序中使用 swi-prolog。它从用户那里获取输入查询并为其创建断言。我将这部分保留为齿轮工(如服务器套接字),它一直在侦听输入查询。
第一个查询 - 程序生成 x 个断言
第二个查询 - 程序生成 y 个断言,现在程序在处理查询时考虑 (x+y) 个断言。
等等。
有没有办法在每次查询执行后刷新断言?这是process.pro的代码sn-p:
这里的链接接受断言,问题用于输入查询。
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: 是的,复制代码 sn-p 时忘记删除。
-
将
nb_getval/2和nb_linkval用于您的目的是没有意义的。这些结构很少使用,从它们开始你不会学到任何关于 Prolog 的知识。 -
@false:谢谢,实际上我找不到更好的 swi-prolog 教程,而且我只是初学者。感谢您的建议和改进
标签: prolog swi-prolog