1) Мне нужен способ повторить вопрос, если пользовательский ввод был другим, чем да/нет?
2) Мне нужен способ, позволяющий CLIPS принимать строчные и заглавные буквы.
Я нашел этот образец с помощью Google, но я не уверен, как он работает в определенных строках. Может ли кто-нибудь объяснить мне, как это работает? Или есть лучший способ сделать обе вещи, которые мне нужны.
(deffunction ask-question (?question $?allowed-values)
(printout t ?question)
(bind ?answer (read))
(if (lexemep ?answer)
then (bind ?answer (lowcase ?answer)))
(while (not (member ?answer ?allowed-values)) do
(printout t ?question)
(bind ?answer (read))
(if (lexemep ?answer)
then (bind ?answer (lowcase ?answer))))
?answer)
(deffunction yes-or-no-p (?question)
(bind ?response (ask-question ?question yes no y n))
(if (or (eq ?response yes) (eq ?response y))
then yes
else no))