这个定义有什么问题,因为它总是给我这个错误
[PRNTUTIL2] Syntax Error: Check appropriate syntax for defrule.
ERROR:
(defrule MAIN::print-university-info
?university <- (object (is-a University)
(universityName $?name)
(numFaculties $?num)
(faculties ?facultyy $?faculties))
?faculty <- (find-instance (
CLIPS>
规则是
(defrule print-university-info
?university <- (object (is-a University) (universityName $?name) (numFaculties $?num) (faculties ?facultyy $?faculties))
?faculty <- (find-instance ((?facultyInstance Faculty)) (eq ?facultyy ?facultyInstance))
=>
(printout t "University name: " ?name " Number of faculties: " ?num " Faculties: " ?faculty crlf)
)
类是
(
defclass University
(is-a USER)
(slot universityName (type SYMBOL))
(slot numFaculties (type INTEGER))
(multislot faculties (type INSTANCE))
)
(
defclass Faculty
(is-a USER)
(slot facultyName (type STRING))
)
和实例
(make-instance Cairo of University (universityName "Cairo") (numFaculties 1) (faculties [FCAI]))
(make-instance FCAI of Faculty (facultyName "FCAI"))
我检查查找实例添加到剪辑(find-instance ((?教员教员))(eq ?教员教员[FCAI]))
返回这个
CLIPS> (find-instance ((?facultyInstance Faculty)) (eq ?facultyInstance [FCAI]))
([FCAI])
Find-instance是一个函数。要从规则的条件调用函数,需要使用test有条件的元素。您在规则中使用find-instance的方式是,CLIPS认为它是deftemplate的名称。通常,从规则的条件中调用查询函数几乎没有任何理由;对于大多数用例,您可以从规则的操作中调用它们。在规则的条件中,使用模式代替:
CLIPS (6.4 2/9/21)
CLIPS>
(defclass University
(is-a USER)
(slot universityName (type SYMBOL))
(slot numFaculties (type INTEGER))
(multislot faculties (type INSTANCE)))
CLIPS>
(defclass Faculty
(is-a USER)
(slot facultyName (type STRING)))
CLIPS>
(definstances initial
(Cairo of University
(universityName "Cairo")
(numFaculties 1)
(faculties [FCAI]))
(FCAI of Faculty
(facultyName "FCAI")))
CLIPS>
(defrule print-university-info
?university <- (object (is-a University)
(universityName $?name)
(numFaculties $?num)
(faculties ?facultyy $?faculties))
?faculty <- (object (is-a Faculty)
(name ?facultyy))
=>
(printout t "University name: " ?name " Number of faculties: " ?num " Faculties: " ?faculty crlf))
CLIPS> (reset)
CLIPS> (run)
University name: Cairo Number of faculties: 1 Faculties: <Instance-FCAI>
CLIPS>