On Feb 15, 2008, at 9:28 AM, Henrique Lopes Cardoso wrote:
(defrule
?b1 <- (t1 (s ?s1))
?b2 <- (t2 (s ?s2))
(or (test (eq ?s1 x)) (test (eq ?s2 x)))
=>
...)
This example simplifies the general case. I may have any number of
bindings, and the common slot 's' is checked to see if at least one of
the bound facts has a certain x value. Is there a more efficient
way of
doing this? E.g. (member$ x (list ?b1 ?b2 ...)) ?
Efficient in terms of typing these out, or in terms of execution?
We're actually working on optimizing these kinds of things in the
network; by the final release of Jess 7.1, the above should actually
be equivalent to something like
(defrule
(or (and ?b1 <- (t1 (s ?s1&x))
?b2 <- (t2 (s ?s2)))
(and ?b1 <- (t1 (s ?s1))
?b2 <- (t2 (s ?s2&x))))
==>
which is extremely efficient. The above is the best way to write this
right now, but hopefully the two will soon be equivalent.
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences Phone: (925) 294-2154
Sandia National Labs FAX: (925) 294-2234
PO Box 969, MS 9012 [EMAIL PROTECTED]
Livermore, CA 94550 http://www.jessrules.com
--------------------------------------------------------------------
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]
--------------------------------------------------------------------