Какая проблема с ошибкой?
ERROR-1: [ARGACCES5]функция >= ожидала, что аргумент #2 будет типа integer или float. ERROR-2: [CSTRCPSR1] ожидалось начало контры.
Как исправить эту ошибку?
Первая ошибка заключается в том, что вы передаете нечисловой аргумент в качестве второго аргумента в функцию >=. Когда в конструкции возникает ошибка, CLIPS покажет вам, что было разобрано, чтобы помочь вам найти проблему:
CLIPS>
(defrule example
(test (>= 3 a))
=>)
[ARGACCES5] Function >= expected argument #2 to be of type integer or float
ERROR:
(defrule MAIN::example
(test (>= 3 a)
CLIPS>
Как правило, вторая ошибка возникает, когда при загрузке конструкций у вас есть лишняя или недостающая скобка. Например, если вы создадите файл с именем example.clp со следующим содержимым:
(defrule example-1 =>)
(defrule example-2 =>)
) ; Extra parenthesis
(defrule example-3 =>)
(defrule example-4 =>)
Вы получите эту ошибку, когда попытаетесь загрузить его:
CLIPS> (watch compilations)
CLIPS> (load "example.clp")
Defining defrule: example-1 +j+j
Defining defrule: example-2 +j
[CSTRCPSR1] Expected the beginning of a construct.
Defining defrule: example-3 +j
Defining defrule: example-4 +j
FALSE
CLIPS>
Если вы'следите за компиляциями, вы можете лучше понять, где возникает ошибка. В данном случае она находится между правилами example-2 и example-3.