2017-09-18 15 views
0

1)ユーザーの入力がyes/no以外の場合は、質問を繰り返す方法が必要ですか?CLIPSプログラミングの説明が必要

2)CLIPSに小文字と大文字を受け入れる方法が必要です。

私はこのサンプルをグーグルで見つけましたが、特定の行でどのように動作するかはわかりません。誰も私にこのことがどういうものなのか説明できますか?または、私が必要とするものの両方を実行するためのより良い方法があります。

(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)) 

答えて

1

尋ねる-質問機能のための擬似コード:

Print the question. 
Get the answer. 

If 
    The answer is a symbol or string 
Then 
    Convert the answer to lower case. 
End if 

While the answer is not one of the allowed values 

    Print the question. 
    Get the answer. 

    If 
    The answer is a symbol or string 
    Then 
    Convert the answer to lower case. 
    End if 

End while 

Return the answer.