Вы используете функцию Джесса (modify)
для изменения фактов. Как объяснено в руководстве , упорядоченные факты, такие как (node1 6.5)
, внутренне представлены как неупорядоченные факты с одним слотом с именем __data
, поэтому вы можете использовать эти знания для их изменения:
Jess> (assert (node1 6.5))
<Fact-0>
Jess> (modify 0 (__data 7.5))
<Fact-0>
Jess> (facts)
f-0 (MAIN::node1 7.5)
For a total of 1 facts in module MAIN.
Теперь, учитывая все это, для эффективности я все равно рекомендую использовать неупорядоченный шаблон, такой как
(node (slot index) (slot value))
, чтобы ваши факты выглядели как
(node (index 1) (value 6.5))
(node (index 2) (value 100))
Что касается вашего последнеговопрос: я не совсем уверен, что вы имеете в виду, но вы можете найти конструкцию (deffacts)
и функцию (reset)
и посмотреть, будут ли они вместе делать то, что вам нужно.