【发布时间】:2015-11-13 18:15:52
【问题描述】:
我在问是否有可能在 defrule 的 RHS 中访问 get the index of fact ? 每次我尝试在 derule 的 RHS 中索引一个事实时,它都会给我带来不确定性。 因为我有一个while循环,我希望能够根据我的输入数据修改电梯事实。
(deftemplate elevator
(slot goal))
(deffacts elevator
(elevator (goal 0)))
(defrule read-data
=>
?f1 <- (elevator)
(modify ?f2 (goal 1))
)
这是我的代码示例,因为我不能全部在线:
(deftemplate data
(slot data)
)
(deffacts data
(data (data 1))
)
(defrule rule1
?f1 <-(data)
=>
(bind ?value (readline input) )
(while (neq ?value EOF)
do
(bind ?data (fact-slot-value ?f1 data))
(printout t "data " ?data crlf )
(retract ?f1)
(modify ?f1 (data ?value))
(bind ?value (readline input)
)
)
)
这是我的输入文件:
2
3
4
5
6
7
这就是我得到的:
CLIPS> (run)
data 1
data FALSE
data FALSE
data FALSE
data FALSE
data FALSE
CLIPS>
我想打印出来 数据 2 数据 3 数据 4 ..ect
【问题讨论】:
标签: clips