CLIPS(专家系统)编写用于添加和删除队列中的值的规则

时间:2017-12-03 19:22:00

标签: clips expert-system

我需要帮助来编写两个规则,即添加和删除队列中的值。从队列中删除值的规则必须使用forall结构。

据我所知,CLIPS没有数组,堆栈,列表或任何其他类型的集合。所以我开始使用插槽queue定义模板item,它应该表示队列的值,但是没有成功使用规则。有谁知道如何做到这一点?

1 个答案:

答案 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")