Python:有没有办法让 swipl 查询产生值 true 而不是 ?
Posted
技术标签:
【中文标题】Python:有没有办法让 swipl 查询产生值 true 而不是 ?【英文标题】:Python: Is there a way a swipl query results in value true not ?Python:有没有办法让 swipl 查询产生值 true 而不是 ? 【发布时间】:2022-01-21 15:24:19 【问题描述】:要在 python 中调用 prolog 程序,有 pyswip 库。
如果给定值的规则为真或假,是否有可能获取信息。如果我从 swipl 调用控制台中的一个事实,我会得到例如
?- dad(a). true.
如果我在 python 中尝试同样的方法:
从 pyswip 导入 Prolog, registerForeign
from pyswip import Prolog
prolog = Prolog()
prolog.assertz("dad(peter)")
for res in prolog.query("dad(peter)."):
print(res)
它只给我输出:
不是真的。此时我是否可以调用另一个函数来获取 True 或 False,或者在这种情况下是查询函数的预期值 ?
【问题讨论】:
对于 SWI-Prolog 到 Python,你应该看看 SWI Prolog Machine Query Interface and Python Integration 【参考方案1】:从 Prolog 的角度来看, 是预期的结果。当 Prolog 查询成功时,Prolog 打印一组答案替换:
?- dad(X).
X = peter.
作为一种特殊情况,如果查询中没有绑定任何变量,Prolog 需要指出 (a) 查询成功,并且 (b) 没有绑定任何变量。传统上,这是通过打印yes
或true
之类的内容来完成的。但这只是“成功,零替换”的简写。而且这只是一个打印约定,而不是任何真正意义上的“返回值”。 Prolog 没有返回值。
如果您使用使用语言的集合类型来表示成功和答案替换集的外国库,那么将成功和零替换表示为零元素集是有意义的,即。
【讨论】:
以上是关于Python:有没有办法让 swipl 查询产生值 true 而不是 ?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在值增加时让引导进度条动画,但在重置为 0 时没有?
有没有办法使用 scikit 或任何其他 python 包只获取单词的 IDF 值?