Я пытался создать шаблон для хранения некоторых результатов, которые я вычисляю, поэтому я сделал это для инициализации:
(deftemplate tempAlumne
(slot nota-media-total)
(slot nota-media-obligatorias)
(slot nota-media-optativas)
(slot nota-media-ales)
)
(deffacts tempAlumneFacts
(tempAlumne
(nota-media-total -1)
(nota-media-obligatorias -1)
(nota-media-optativas -1)
(nota-media-ales -1)
)
)
И затем я пытаюсь использовать эту структуру для хранения значений, ноМне нужно, чтобы это было доступно из многих правил, поэтому я решил сделать его глобальным.Поэтому я попытался сохранить значения следующим образом:
(defrule calcula-nota-media ""
(not calcula-nota-media ok)
?*tmpA* <- (tempAlumne )
=>
(bind ?llista_convocs (send ?*alumne* get-IConvocatoria))
(bind ?suma 0)
(bind ?i 0)
(while(< ?i (length$ ?llista_convocs)) do
(bind ?convoc_actual (nth$ ?i ?llista_convocs))
(bind ?suma (+ ?suma (send ?convoc_actual get-Nota)))
(bind ?i (+ ?i 1))
)
(/ )
(modify (?*tmpA* (nota-media-total (/ ?suma ?i))
(assert calcula-nota-media ok)
)
, потому что я хочу, чтобы? * TmpA * имел начальные значения, а затем присваивал каждому из них модификацию (здесь я назначаю nota-media-total), ноговорит "Синтаксическая ошибка [PRNTUTIL2]: проверьте соответствующий синтаксис для дефруляции.", поэтому я не знаю, что не так, или если я иду по неправильному пути.