Я очень озадачен КЛИПСАМИ. Я определил в файле .clp deftemplate и правило.
(deftemplate basic-ch "Basic characteristics template"
(slot ch-name
(type SYMBOL)
(default ?DERIVE)
)
(slot score
(type INTEGER)
(default 1)
(range 1 5)
)
)
(defrule make-ch
?get-ch <- (get-ch TRUE)
=>
(printout t "Enter ch name" crlf)
(bind ?name (read))
(printout t "Enter ch score" crlf)
(bind ?score (read))
(assert (basic-ch (ch-name ?name) (score ?score)))
(retract ?get-ch)
)
Когда i (assert (get-ch TRUE)) и (run), он запрашивает у меня имя ch и счет. Однако, если я введу строку для оценки, она будет утверждена правилом! Например:
Enter ch name
hello
Enter ch score
hello
;(basic-ch (ch-name hello)(score hello)) get asserted?!
Как это возможно? Я определил оценку как INTEGER и даже указал диапазон. Как я могу это остановить?