【发布时间】:2013-05-02 03:22:53
【问题描述】:
我希望通过函数获取好友列表。
(deffunction get-freinds-list (?age)
(bind ?facts (find-all-facts ((?f userdata))
(and (eq ?f:name userdata)
(>= ?f:age ?age))))
return ?facts)
(defrule getfriends
(wantlist yes)
=>
(printout t "under what age you want list for?" crlf)
(bind ?age (read))
(printout t "list is=" (get-freinds-list ?age ) crlf))
(defrule main-control
(initial-fact)
=>
(assert(wantlist yes))
)
(deffacts userfact
(userdata(name "pranay" )(likes tea cricket badminton table farewell)(age 12)(location pakistan)(employer Oracle))
(userdata(name "rohan" )(likes lunch kabaddi tt khoko farewell)(age 10)(location china)(employer TCS))
(userdata(name "srinath" )(likes dinner kabaddi cricket farewell)(age 15)(location china)(employer TCS))
(userdata(name "prateek" )(likes dinner kabaddi cricket farewell drinks)(age 15)(location china)(employer TCS))
(userdata(name "sachin" )(likes drinks kabaddi cricket)(age 15)(location china)(employer TCS))
)
(deftemplate userdata "Knoweledge base"
(slot name)
(multislot likes)
(slot age)
(slot location)
(slot employer)
)
【问题讨论】:
-
不需要在没有其他条件的情况下将初始事实添加到规则中;它会在 6.3 版之前的 CLIPS 版本中自动添加。最初的事实功能在 6.3 版本中已弃用;它仍然由复位断言,但没有条件的规则不再依赖它。在 6.4 版本中,initial-fact 不再被断言,因此明确匹配该事实的规则将不再被激活。
标签: expert-system clips