我正在尝试在Jess中实现传递闭包。
用
(deftemplate P
(slot id)
(multislot d) ; reference to Ps
)
如何收集传递槽调用:(p :: P).d.d.d.d ....直到不再需要d-ref?
我想过
(deffunction closure(?p)
?p1 <- (P (id ?p) (d $?p1d) ; Get the fact which name is given as parameter
?p2 <- (P (id ?id&:(member$ ?id ?p1d)))
(union$ ?p closure( ?p2 ) ) ; Meaning p.d.d.d.d.d.d.d.d.... Tree wise.
)
但它没有给出任何有趣的东西。 我也考虑过使用查询,但由于调用是从LHS进行的,所以我不鼓励这样做。
非常感谢任何帮助。 谢谢, 爱德华