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]
--------------------------------------------------------------------

Reply via email to