I would have done something like that:

(defrule sum
  ?f1 <- (purchase ?s1)
  ?f2 <- (purchase ?s2)
         (test (neq ?f1 ?f2))
=>
  (retract ?f1)
  (retract ?f2)
  (assert (purchase (+ ?s1 ?s2)))
)

Works at least with CLIPS but I suppose with Jess as well. How does that
compare performance-wise?

(Of course, your initial facts are gone afterwards - if you want to keep
them, it gets a little more difficult).

        tge

[EMAIL PROTECTED] wrote:
> 
> The most efficient way to do it would be to use a defquery to find all
> the PURCHASE facts, then iterate over the query result directly and
> add them up. You could define a deffunction to do this.
> 
> I think John Goalby wrote:
> > I would like to be able to have the following facts...
> >
> > (assert (PURCHASE 100))
> > (assert (PURCHASE 150))
> > (assert (PURCHASE 70))
> >
> > and then be able to have a rule that would give me the
> > sum of these purchases.  Is that possible?
> >
> > Thanks
> >
> > John.
> 

-- 
    Thomas Gentsch


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