0
我嘗試閱讀有關Jess的教程,但找不到任何有用的東西。我想建立一個程序來找出我正在談論的那個樂器。因此,如果樂器有琴絃,我們知道樂器是琴絃或打擊樂器(即鋼琴)類別。我會如何編寫一個規則來保存一個事實,說明該類別是基於此標準的打擊樂器或字符串?如何在Jess中通過規則添加事實?
我認爲綁定,但不綁定意味着我將不得不爲每個潛在的類別有一個單獨的變量?或者,我應該使用斷言?
我嘗試閱讀有關Jess的教程,但找不到任何有用的東西。我想建立一個程序來找出我正在談論的那個樂器。因此,如果樂器有琴絃,我們知道樂器是琴絃或打擊樂器(即鋼琴)類別。我會如何編寫一個規則來保存一個事實,說明該類別是基於此標準的打擊樂器或字符串?如何在Jess中通過規則添加事實?
我認爲綁定,但不綁定意味着我將不得不爲每個潛在的類別有一個單獨的變量?或者,我應該使用斷言?
這演示瞭如何從規則中插入一個事實來存儲一組可能的類別。
(deftemplate Instrument (slot strings))
(deftemplate Classification (multislot category))
(defrule cat-by-strings
?i <- (Instrument (strings ?s&:(> ?s 0)))
=>
(assert (Classification (category STRING PERCUSSION)))
)
(assert (Instrument (strings 18)))
(run)
(facts)
輸出:
f-0 (MAIN::initial-fact)
f-1 (MAIN::Instrument (strings 18))
f-2 (MAIN::Classification (category STRING PERCUSSION))
For a total of 3 facts in module MAIN.
使用約束變量是無用的,因爲它們被限制爲規則的上下文。