+1 for Michael's suggestion. It's a bit more verbose, but makes things clear.
The semicolon here: ?editableThings(food : ?, loc;) Is a typo, right? You actually meant: ?editableThings(food : ?, loc)*;* - Leo. On Wed, Apr 20, 2011 at 11:59 AM, Michael Anstis <michael.ans...@gmail.com>wrote: > Hmmmmm.... > > Personally, I don't like the use of ":" i isolation as it's what we > currently use to bind variables and I feel "cheese:" as an output definition > could just make people question whether they've missed something. Perhaps > "cheese : ?" would be a viable alternative. This would be in keeping with > (a) current variable declaration, (b) the use of "?" to identify a call to a > query. Geoffrey's examples would then become:- > > > rule outputinput > when > Here( loc : location) > ?editableThings(food : ?, loc;) > then > System.out.println("Food " + food + " at location " + loc); > > // Output: > // Food crackers at location kitchen > // Food apple at location kitchen > end > > rule outputOutput > when > ?editableThings(food : ?, loc : ?;) > then > System.out.println("Food " + food + " at location " + loc); > > // Output: > // Food crackers at location kitchen > // Food apple at location kitchen > // Food chocolate at location living room > // Food chips at location living room > end > > rule typo > when > Here( looc : location) > ?editableThings(food : ?, loc : ?;) > then > System.out.println("Food " + food + " at location " + loc); > > // Output: > // Food crackers at location kitchen > // Food apple at location kitchen > // Food chocolate at location living room > // Food chips at location living room > // looc is just an unused bound variable > end > > > On 20 April 2011 10:16, Geoffrey De Smet <ge0ffrey.s...@gmail.com> wrote: > >> Mark and I were discussing backwards chaining >> http://blog.athico.com/2011/04/backward-chaining-emerges-in-drools.html >> on IRC and we 'd like your opinion on a design issue. >> >> The example >> ======== >> >> Let's say you have this data: >> Location("crackers", "kitchen") >> Location("apple", "kitchen") >> Location("chocolate", "living room") >> Location("chips", "living room") >> >> Let's say you have this code: >> >> query editableThings( String thing, String location ) >> Location(thing, location) >> end >> >> And then these 3 rules: >> >> rule outputinput >> when >> Here( loc : location) >> ?editableThings(food, loc;) >> then >> System.out.println("Food " + f + " at location " + loc); >> // Output: >> // Food crackers at location kitchen >> // Food apple at location kitchen >> end >> >> rule outputOutput >> when >> ?editableThings(food, loc;) >> then >> System.out.println("Food " + f + " at location " + loc); >> // Output: >> // Food crackers at location kitchen >> // Food apple at location kitchen >> // Food chocolate at location living room >> // Food chips at location living room >> end >> >> rule typo >> when >> Here( looc : location) >> ?editableThings(food, loc;) >> then >> System.out.println("Food " + f + " at location " + loc); >> // Output: >> // Food crackers at location kitchen >> // Food apple at location kitchen >> // Food chocolate at location living room >> // Food chips at location living room >> end >> >> >> The discussion >> ========= >> >> Both rules have the same statement: >> ?editableThings(food, loc;) >> >> In the outputInput rule, "loc" is an input variable. >> In the outputOutput rule, "loc" is an output variable. >> >> I am wondering if we don't need a visual demarcation that a variable is an >> output variable, >> to make it stand out of an input variable? >> >> Proposition 1: Suffix output variables with ":" >> >> rule outputinput >> when >> Here( loc : location) >> ?editableThings(food:, loc;) >> then ... end >> >> rule outputOutput >> when >> ?editableThings(food:, loc:;) >> then ... end >> >> rule typo >> when >> Here( looc : location) >> ?editableThings(food:, loc;) // compiler error because input variable >> loc is not declared >> then ... end >> >> >> -- >> With kind regards, >> Geoffrey De Smet >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> > > _______________________________________________ > rules-dev mailing list > rules-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-dev > >
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev