Hi Bruce,
Thank you very much for the explanation. Actually what bothers me is not the :reset effect, but that match variables are undefined at the start of a volley.
Take the following simplified rule for example:
u: ( ~i_want_to ~send *~1 [package something] {to _~location} ) if (_0) {$dest=_0} ^respond(~questions)
A valid input like “I want to send something” should ideally leave $dest null as opposed to “I want to send something to New York” which will set $dest to New York. But the match variable _0 sometimes will carry residual value from prior rules and makes the former case matched with unwanted result.
I still could not find a way to deal with this optional location input. If all match variables could be reset before execution of each rule, which seems to me the proper definition of such variable, the issue will be fixed for this common scripting requirement.
Or is there any other easier way to fix it? Appreciate any advice.