Does fact-slot-value work for multislots?
I have
(deftemplate equiv
(slot type)
(multislot set))
(defquery equivs-of-type
"Returns an enumeration of equiv facts of the specified type."
(declare (variables ?type))
(equiv (type ?type) (set $?set)))
(deffunction test-equiv (?type ?thing1 ?thing2)
(bind ?e (run-query equivs-of-type ?type))
(while (?e hasMoreElements)
(bind ?elt (call ?e nextElement))
;; The document isn't clear about why this is needed
(bind ?fact (call ?elt fact 1))
(bind $?set (fact-slot-value ?fact set)) ; <<<<< HERE?
(if (and (member$ ?thing1 $?set)
(member$ ?thing2 $?set))
then
(return ?fact)))
(return FALSE))
(and a bunch of other stuff) and am getting the following error
(whitespace added for readability):
Jess exception: Jess reported an error in routine call
while executing (call (engine) findFactByID ?__fact-id)
while executing (bind ?__fact (call (engine) findFactByID ?__fact-id))
while executing deffunction fact-slot-value
while executing (fact-slot-value ?fact set)
while executing (bind $?set (fact-slot-value ?fact set))
while executing (while (call ?e hasMoreElements)
(bind ?elt (call ?e nextElement))
(bind ?fact (call ?elt fact 1))
(bind $?set (fact-slot-value ?fact set))
(if (and (member$ ?thing1 $?set) (member$ ?thing2 $?set))
then (return ?fact)))
while executing deffunction test-equiv
while executing (test-equiv segment-side ?side1 ?side2)
while executing 'test' CE
while executing rule LHS (Node2)
while executing rule LHS (TECT)
while executing (assert (opposites circular-direction ?circ3 ?circ4)
(opposites segment-side ?side3 ?side4)
(cp-circular (crosspoint ?cp)
(segment ?seg-c)
(segment-direction in)
(circular-direction ?circ3)
(face ?face2))
(segment-face (face ?face2)
(edge ?seg-c)
(edge-side ?side3))
(cp-circular (crosspoint ?cp)
(segment ?seg-b)
(segment-direction out)
(circular-direction ?circ4)
(face ?face2))
(segment-face (face ?face2)
(edge ?seg-b)
(edge-side ?side4)))
while executing defrule faces-and-segments-at-crosspoint.
Message: No overloading of method 'findFactByID' in class jess.Rete I can call
with these arguments: (call (engine) findFactByID ?__fact-id).
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------