Несогласованность при извлечении строкового представления фактов с помощью clipspy

Только начал работать с clipspy-0.3.3 в Python 3.8.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)))

было бы хорошо, если бы строковое представление фактов было бы последовательно возвращено .facts() счетчик в clispy пакет.

1 ответ

Решение

Это похоже на ошибку в clipspy, Я бы посоветовал вам открыть вопрос о его репозитории.

Другие вопросы по тегам