使用 clipspy 提取事实的字符串表示不一致
Inconsistency in extracting string representation of facts using clipspy
刚开始使用 Python 3.8.3 中的 clipspy-0.3.3。
提取事实时,.facts()
枚举器出现不一致。
下面的代码
import clips
env = clips.Environment()
env.assert_string("(value 1)")
env.assert_string("(value 2)")
env.assert_string("(value 3)")
env.assert_string("(value 4)")
env.assert_string("(value 5)")
env.assert_string("(value 6)")
env.assert_string("(value 7)")
env.assert_string("(value 8)")
env.assert_string("(value 9)")
env.assert_string("(value 10)")
for fact in env.facts():
print(fact)
产生结果
(initial-fact)
(value 1)
(value 2)
(value 3)
(value 4)
(value 5)
(value 6)
(value 7)
(value 8)
(value 9)
f-10 (value 10)
从中可以看出其中的不一致
- 数字小于 10 的事实,前面的
f-1
从事实字符串中删除,并且,
- 数量等于或大于 10 的事实,前面的
f-10
不会从事实字符串中删除。
即使上面的不一致可以用正则表达式替换来解决,如下
import re
for fact in env.facts():
print(re.sub(r'^[^(]*',r'',str(fact)))
如果 clispy
包中的 .facts()
枚举器能够一致地返回事实的字符串表示,那就太好了。
这看起来像是 clipspy
中的错误,我建议您在其 repository 上打开一个问题。
刚开始使用 Python 3.8.3 中的 clipspy-0.3.3。
提取事实时,.facts()
枚举器出现不一致。
下面的代码
import clips
env = clips.Environment()
env.assert_string("(value 1)")
env.assert_string("(value 2)")
env.assert_string("(value 3)")
env.assert_string("(value 4)")
env.assert_string("(value 5)")
env.assert_string("(value 6)")
env.assert_string("(value 7)")
env.assert_string("(value 8)")
env.assert_string("(value 9)")
env.assert_string("(value 10)")
for fact in env.facts():
print(fact)
产生结果
(initial-fact)
(value 1)
(value 2)
(value 3)
(value 4)
(value 5)
(value 6)
(value 7)
(value 8)
(value 9)
f-10 (value 10)
从中可以看出其中的不一致
- 数字小于 10 的事实,前面的
f-1
从事实字符串中删除,并且, - 数量等于或大于 10 的事实,前面的
f-10
不会从事实字符串中删除。
即使上面的不一致可以用正则表达式替换来解决,如下
import re
for fact in env.facts():
print(re.sub(r'^[^(]*',r'',str(fact)))
如果 clispy
包中的 .facts()
枚举器能够一致地返回事实的字符串表示,那就太好了。
这看起来像是 clipspy
中的错误,我建议您在其 repository 上打开一个问题。