> From [EMAIL PROTECTED] Tue Dec 15 16:57:11 1998
> However, as a "rule programmer" I am not satisfied with it. My
> understanding of the principle of refractoriness (or my desires about it)
> is that no activation identical to one which has already been executed
> should enter the agenda. By "identical activations" I mean activations
> which are described by the same rule name and the same fact-address list.
> Here is where "pseudo tags" come in: conceptually the two activations of
> foo-2 corresponding to the SAME fact (A 1) differ only in terms of a
> "pseudo tag" corresponding to the absence of a fact (B 1) (the comma at the
> end of the fact-address list suggests there is something more which cannot
> be displayed ...)
> 
> Marco

I'm only joining this discussion because I'm in a cranky mood, so be
forewarned...

This issue is really independent of the way negations are treated.
It applies equally to, say, the rule

(defrule x
        (a)
=>
        (printout t "hello" crlf)
)

which will fire every time (a) becomes true when it wasn't before.
So, if you assert (a), x will be activated and will fire upon a (run).
Retract (a), then assert it again, and x will again be activated and
will fire upon a (run).

I'm not sure what "refractoriness" is, but as a long-time CLIPS/Jess
user I would be more than a little upset if someone changed this 
behavior!  It simplifies the required logic in many situations.

To deal with the cases when I really want x to fire once and only once,
I just define it as:

(defrule once-only-x
        (a)
        (not (fired-x-already))
=>
        (printout t "hello" crlf)
        (assert (fired-x-already))
)

Perhaps this seems inelegant, but it's become so second nature to me 
that my fingers end up typing it before I've even thought consciously 
about it.  I too like Prolog, but it's a different beast, after all.

Sidney Bailin
Knowledge Evolution, Inc.
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list. List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------

Reply via email to