【发布时间】:2019-03-29 10:13:12
【问题描述】:
您好,我写了一个 defrule 来模拟命题法则,但是当我给它正确的输入时,defrule 没有触发。
我相信explode$ 可能会添加一些空格,但我不知道如何删除它们
CLIPS (Cypher Beta 8/21/18)
CLIPS> (batch "AI taak.txt")
TRUE
CLIPS> (deftemplate andprop (slot symbol1)(slot symbol2))
CLIPS> (deftemplate orprop (slot symbol1)(slot symbol2))
CLIPS> (deftemplate implies (multislot premise)(multislot implication))
CLIPS> (deftemplate sentence (multislot sent))
CLIPS>
(defrule read-from-user
=>
(printout t "Please enter a sentence: Use ~ for not and => for implies
please " crlf)
(bind ?response (explode$ (readline)))
(assert (sentence (sent ?response))))
CLIPS>
(defrule negative
(sentence (sent "~" "(" "~" ?symbol ")"))
=>
(printout t "HI " ?symbol crlf))
CLIPS> (run)
Please enter a sentence: Use ~ for not and => for implies please
~(~P)
CLIPS> (facts)
f-1 (sentence (sent ~ ( ~ P )))
For a total of 1 fact.
所以理论上否定规则应该触发,但它不是#t。帮助找出原因将不胜感激。谢谢
【问题讨论】: