我需要帮助来编写两个规则,即添加和删除队列中的值。从队列中删除值的规则必须使用forall
结构。
据我所知,CLIPS没有数组,堆栈,列表或任何其他类型的集合。所以我开始使用插槽queue
定义模板item
,它应该表示队列的值,但是没有成功使用规则。有谁知道如何做到这一点?
答案 0 :(得分:0)
CLIPS有多字段对象作为列表。
您可以将队列定义为全局变量,并在规则中对其进行修改,如本示例所示(LIFO队列)。
CLIPS> (defglobal ?*queue* = (create$))
; add "foo" to the queue
CLIPS> (bind ?*queue* (insert$ ?*queue* 1 "foo"))
("foo")
; add "bar" to the queue
CLIPS> (bind ?*queue* (insert$ ?*queue* 1 "bar"))
("bar" "foo")
; remove first element from the queue
(bind ?*queue* (delete$ ?*queue* 1 1))
("foo")