Simple yes, but consistent too should be a factor.
Most questions we have to the user mailing list involve people writing DRL not using tooling.
So DRL, IMO, has to be seen as the "tool" to author rules. Drop the proposed colon altogether or make it's use consistent.
My personally opinion is to keep the language simple and instead have the tooling inject what ever is necessary as a visulation. Be it different colouring, hover over or graphic symbol. It keeps the language simple and actually achieve the desired result better.
Mark
On 20/04/2011 14:00, Leonardo Gomes wrote:+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.anstis@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:-
ruleoutputinput
whenHere( loc : location)?editableThings(food : ?,loc;)then
System.out.println("Food " + food + " at location " + loc);
// Output:
// Food crackers at location kitchen
// Food apple at location kitchenend
ruleoutputOutput
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 roomend
ruletypo
whenHere( looc : location)?editableThings(food : ?,loc : ?;)then
System.out.println("Food " + food + " at location " + loc);// looc is just an unused bound variable
// Output:
// Food crackers at location kitchen
// Food apple at location kitchen
// Food chocolate at location living room
// Food chips at location living room
end
On 20 April 2011 10:16, Geoffrey De Smet <ge0ffrey.spam@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:
queryeditableThings( String thing, String location )Location(thing, location)end
And then these 3 rules:
ruleoutputinput
whenHere( loc : location)?editableThings(food,loc;)then
System.out.println("Food " + f + " at location " + loc);
// Output:
// Food crackers at location kitchen
// Food apple at location kitchenThe discussionend
ruleoutputOutput
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 roomend
ruletypo
whenHere( 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 roomend
=========
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 ":"
ruleoutputinput
whenHere( loc : location)?editableThings(food:,loc;)then ... end
ruleoutputOutput
when?editableThings(food:,loc:;)then ... end
ruletypo
whenHere( looc : location)?editableThings(food:,loc;) // compiler error because input variable loc is not declaredthen ... 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
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev